use super::{CLOSE, CONFIRM, HEADING, OPEN, REACH, WHAT};
use crate::paint_probe::frame::Window;
use crate::test_support::window::{click, own, painted, trailing};
use crate::ui::{Channel, Model, Trail};
#[test]
fn the_trail_s_control_opens_the_place_and_stands_the_trail_down() {
let mut model = trailing();
let window = Window::new();
click(&window, OPEN, |ctx| crate::ui::render(ctx, &mut model));
assert!(model.clearing(), "the control opened nothing");
assert!(!model.trailing(), "two panes on one glass");
let glass = painted(&mut model);
assert!(glass.contains(HEADING), "{glass}");
assert!(glass.contains(WHAT), "{glass}");
assert!(glass.contains(REACH), "{glass}");
}
#[test]
fn it_names_every_engine_the_cut_would_reach() {
let mut model = trailing();
let quiet = Channel {
name: "elsewhere".to_owned(),
..own().channel
};
model.roster.push(crate::ui::Chunk::of(quiet.clone()));
model.trails.push(Trail {
channel: quiet,
rows: Vec::new(),
});
model.begin_clearing();
let glass = painted(&mut model);
assert!(glass.contains("elsewhere"), "{glass}");
}
#[test]
fn the_way_out_cuts_nothing_and_returns_to_the_trail() {
let mut model = trailing();
model.begin_clearing();
let window = Window::new();
click(&window, CLOSE, |ctx| crate::ui::render(ctx, &mut model));
assert!(model.trailing(), "the way out left the operator nowhere");
assert!(model.outbox.is_empty(), "the way out cut something");
}
#[test]
fn the_act_composes_the_bare_gesture_and_goes_back_to_the_trail() {
let mut model = trailing();
model.begin_clearing();
let window = Window::new();
click(&window, CONFIRM, |ctx| crate::ui::render(ctx, &mut model));
let posted = model.outbox.first().expect("a gesture");
assert_eq!(posted.envelope, serde_json::json!({ "op": "clear-trail" }));
assert!(posted.act, "a truncation is an act");
assert!(model.trailing());
}
#[test]
fn it_paints_nothing_while_it_is_down() {
let mut model = Model::default();
let glass = painted(&mut model);
assert!(!glass.contains(HEADING), "{glass}");
}