#[test]
fn detail_shows_capability_badges_for_pinned_models_only() {
fn detail_text(member: &AgentProfile) -> String {
member_detail_lines_with_session(member, None, &[])
.iter()
.map(|line| {
line.spans
.iter()
.map(|span| span.content.clone().into_owned())
.collect::<String>()
})
.collect::<Vec<_>>()
.join("\n")
}
let view = view_with_overrides();
let reviewer = view.members.iter().find(|m| m.id == "reviewer").unwrap();
let text = detail_text(reviewer);
assert!(text.contains("Capabilities"), "{text}");
assert!(text.contains("1M ctx"), "{text}");
assert!(text.contains("(registry)"), "{text}");
let scout = FleetRoster::built_ins_only().get("scout").unwrap().clone();
assert!(!detail_text(&scout).contains("Capabilities"));
let mut unknown = reviewer.clone();
unknown.profile.model = Some("totally-made-up-model-xyz".to_string());
let text = detail_text(&unknown);
assert!(!text.contains("Capabilities"), "{text}");
assert!(
text.contains("model totally-made-up-model-xyz (pinned)"),
"{text}"
);
}
#[test]
fn operator_detail_surfaces_session_model_capabilities() {
let text = operator_detail_lines(&operator())
.iter()
.map(|line| {
line.spans
.iter()
.map(|span| span.content.clone().into_owned())
.collect::<String>()
})
.collect::<Vec<_>>()
.join("\n");
assert!(text.contains("Capabilities"), "{text}");
assert!(text.contains("1M ctx"), "{text}");
assert!(text.contains("tools"), "{text}");
assert!(
text.contains("catalog"),
"operator should use provider-scoped catalog facts: {text}"
);
}