use super::*;
use crate::tui::{
state::{MissionControlState, PrimaryAgentEntry},
theme::MATRIX_GREEN,
};
use ratatui::{backend::TestBackend, style::Modifier};
use super::test_support::find_text;
fn rendered(state: &MissionControlState) -> String {
let backend = TestBackend::new(100, 20);
let mut terminal = ratatui::Terminal::new(backend).unwrap();
terminal.draw(|frame| draw(frame, state)).unwrap();
terminal
.backend()
.buffer()
.content()
.iter()
.map(|cell| cell.symbol())
.collect::<String>()
}
#[test]
fn render_prompt_shows_agent_none_by_default() {
let state = MissionControlState {
focus_pane: crate::tui::state::TuiFocusPane::Prompt,
..Default::default()
};
assert!(rendered(&state).contains("Prompt [Alt-P] • [Shift-Tab] Agent: None"));
}
#[test]
fn render_prompt_shows_selected_primary_agent_name() {
let mut state = MissionControlState {
focus_pane: crate::tui::state::TuiFocusPane::Prompt,
..Default::default()
};
state.set_primary_agents(vec![PrimaryAgentEntry {
id: "tars".to_string(),
name: "TARS".to_string(),
description: String::new(),
prompt: String::new(),
}]);
state.cycle_primary_agent();
assert!(rendered(&state).contains("Prompt [Alt-P] • [Shift-Tab] Agent: TARS"));
}
#[test]
fn render_prompt_agent_label_uses_muted_non_bold_style() {
let state = MissionControlState {
focus_pane: crate::tui::state::TuiFocusPane::Prompt,
..Default::default()
};
let backend = TestBackend::new(100, 20);
let mut terminal = ratatui::Terminal::new(backend).unwrap();
terminal.draw(|frame| draw(frame, &state)).unwrap();
let buffer = terminal.backend().buffer();
let prompt = find_text(buffer, "Prompt").unwrap();
let agent = find_text(buffer, "[Shift-Tab]").unwrap();
assert_eq!(buffer[prompt].fg, MATRIX_GREEN.green_bright);
assert!(buffer[prompt].modifier.contains(Modifier::BOLD));
assert_eq!(buffer[agent].fg, MATRIX_GREEN.green_dim);
assert_eq!(buffer[agent].bg, MATRIX_GREEN.background);
assert!(!buffer[agent].modifier.contains(Modifier::BOLD));
}