use super::super::{WIDER, render, wider};
use crate::paint_probe::frame::Window;
use crate::test_support::window::{click, pane, queued, waiting};
use crate::ui::{Asking, Model};
#[test]
fn the_verdicts_are_offered_only_where_something_is_parked() {
let mut model = queued();
let painted = pane(|ui| {
render(ui, &mut model);
});
for word in crate::verbs::VERDICTS {
assert!(painted.contains(word), "{word:?}:\n{painted}");
}
let quiet = crate::reply::queue::QueueRow {
held: None,
..waiting("home", "20260830T051200Z-a1b2")
};
let mut bare = Model {
waiting: vec![Asking {
channel: crate::test_support::window::own().channel,
rows: vec![quiet],
}],
..queued()
};
let painted = pane(|ui| {
render(ui, &mut bare);
});
assert!(!painted.contains("refuse"), "{painted}");
}
#[test]
fn a_verdict_composes_the_answer_and_names_no_invocation() {
let window = Window::new();
let mut model = queued();
click(&window, "refuse", |ctx| crate::ui::render(ctx, &mut model));
assert_eq!(
model.outbox,
vec![crate::ui::Posted::act(serde_json::json!({
"op": "answer", "workspace": "home", "scope": "call",
"agent": "20260830T051200Z-a1b2", "verdict": "refuse"
}))]
);
}
#[test]
fn the_wider_reaches_are_offered_as_rows_that_say_what_they_settle() {
let mut model = queued();
let painted = pane(|ui| {
render(ui, &mut model);
});
assert!(painted.contains(WIDER), "{painted}");
for scope in crate::verbs::SCOPES.into_iter().skip(1) {
for word in crate::verbs::VERDICTS {
assert!(
painted.contains(&wider(word, scope)),
"{word}/{scope}:\n{painted}"
);
}
}
let quiet = crate::reply::queue::QueueRow {
held: None,
..waiting("home", "20260830T051200Z-a1b2")
};
let mut bare = Model {
waiting: vec![Asking {
channel: crate::test_support::window::own().channel,
rows: vec![quiet],
}],
..queued()
};
let painted = pane(|ui| {
render(ui, &mut bare);
});
assert!(!painted.contains(WIDER), "{painted}");
}
#[test]
fn a_wider_seat_composes_the_answer_at_the_reach_its_label_names() {
let window = Window::new();
let mut model = queued();
click(&window, &wider("pass", "workspace"), |ctx| {
crate::ui::render(ctx, &mut model);
});
assert_eq!(
model.outbox,
vec![crate::ui::Posted::act(serde_json::json!({
"op": "answer", "workspace": "home", "scope": "workspace",
"agent": "20260830T051200Z-a1b2", "verdict": "pass"
}))]
);
}