use pretty_assertions::assert_eq;
use rho_providers::model::ModelError;
use super::{is_interactive_startup_unavailable_error, parse_first_run_override, SetupEntry};
#[test]
fn provider_setup_errors_are_nonfatal_for_interactive_startup() {
for (case, error) in [
(
"missing credentials",
ModelError::missing_credentials("missing xAI API key"),
),
(
"unsupported provider",
ModelError::UnsupportedProvider("anthropic".into()),
),
] {
assert!(is_interactive_startup_unavailable_error(&error), "{case}");
}
}
#[test]
fn the_first_run_override_selects_a_setup_step() {
let cases = [
("", None),
("0", None),
("false", None),
("no", None),
("signin", Some(SetupEntry::SignIn)),
("sign-in", Some(SetupEntry::SignIn)),
("login", Some(SetupEntry::SignIn)),
(" SignIn ", Some(SetupEntry::SignIn)),
("model", Some(SetupEntry::ChooseModel)),
("models", Some(SetupEntry::ChooseModel)),
("MODEL", Some(SetupEntry::ChooseModel)),
("1", Some(SetupEntry::Auto)),
("true", Some(SetupEntry::Auto)),
("yes please", Some(SetupEntry::Auto)),
];
for (value, expected) in cases {
assert_eq!(
parse_first_run_override(value),
expected,
"override value {value:?}"
);
}
}