返回 CodeWhale
fleet_roster_capability_tests.rs
根目录 / crates / tui / src / tui / views / fleet_roster_capability_tests.rs
1 /// #5038: a pinned model surfaces capability badges from the shared Fleet
2 /// resolver; members inheriting the session route omit the field, and an
3 /// unknown pinned model degrades to honest absence, never fabricated facts.
4 #[test]
5 fn detail_shows_capability_badges_for_pinned_models_only() {
6 fn detail_text(member: &AgentProfile) -> String {
7 member_detail_lines_with_session(member, None, &[])
8 .iter()
9 .map(|line| {
10 line.spans
11 .iter()
12 .map(|span| span.content.clone().into_owned())
13 .collect::<String>()
14 })
15 .collect::<Vec<_>>()
16 .join("\n")
17 }
18
19 // Pinned known model (glm-5.2, no provider): registry facts.
20 let view = view_with_overrides();
21 let reviewer = view.members.iter().find(|m| m.id == "reviewer").unwrap();
22 let text = detail_text(reviewer);
23 assert!(text.contains("Capabilities"), "{text}");
24 assert!(text.contains("1M ctx"), "{text}");
25 assert!(text.contains("(registry)"), "{text}");
26
27 // Inheriting member: no pinned model, no capabilities field.
28 let scout = FleetRoster::built_ins_only().get("scout").unwrap().clone();
29 assert!(!detail_text(&scout).contains("Capabilities"));
30
31 // Unknown pinned model: the field is omitted rather than guessed.
32 let mut unknown = reviewer.clone();
33 unknown.profile.model = Some("totally-made-up-model-xyz".to_string());
34 let text = detail_text(&unknown);
35 assert!(!text.contains("Capabilities"), "{text}");
36 assert!(
37 text.contains("model totally-made-up-model-xyz (pinned)"),
38 "{text}"
39 );
40 }
41
42 /// #5038: the pinned operator row names its session model's capabilities.
43 #[test]
44 fn operator_detail_surfaces_session_model_capabilities() {
45 let text = operator_detail_lines(&operator())
46 .iter()
47 .map(|line| {
48 line.spans
49 .iter()
50 .map(|span| span.content.clone().into_owned())
51 .collect::<String>()
52 })
53 .collect::<Vec<_>>()
54 .join("\n");
55 assert!(text.contains("Capabilities"), "{text}");
56 assert!(text.contains("1M ctx"), "{text}");
57 assert!(text.contains("tools"), "{text}");
58 assert!(
59 text.contains("catalog"),
60 "operator should use provider-scoped catalog facts: {text}"
61 );
62 }
63
63 lines RUST