use pretty_assertions::assert_eq;
use super::*;
fn model() -> InternalAgentModelConfig {
InternalAgentModelConfig::new(
"anthropic".into(),
"claude-fable-5".into(),
"api-key".into(),
)
}
#[test]
fn advisor_mode_and_model_map_to_one_of_three_states() {
let reviewing = |model: &str| AdvisorStatus::Reviewing {
model: model.into(),
};
for (case, status, expected, needs_model) in [
(
"off without model",
AdvisorStatus::new( false, None),
AdvisorStatus::Off,
false,
),
(
"off with model",
AdvisorStatus::new( false, Some(&model())),
AdvisorStatus::Off,
false,
),
(
"on without model",
AdvisorStatus::new( true, None),
AdvisorStatus::MissingModel,
true,
),
(
"on with model",
AdvisorStatus::new( true, Some(&model())),
reviewing("anthropic/claude-fable-5"),
false,
),
(
"on with claude cli model",
AdvisorStatus::new(
true,
Some(&InternalAgentModelConfig::claude_cli(Some("opus".into()))),
),
reviewing("claude-code/opus"),
false,
),
(
"on with default claude cli model",
AdvisorStatus::new(
true,
Some(&InternalAgentModelConfig::claude_cli(None)),
),
reviewing("claude-code/default"),
false,
),
] {
assert_eq!(status.needs_model(), needs_model, "{case}");
assert_eq!(status, expected, "{case}");
}
}