use super::{DISMISS, render};
use crate::paint_probe::frame::Window;
use crate::test_support::window::{click, painted, seated};
use crate::ui::{Model, Notice};
#[test]
fn one_frame_paints_the_roster_the_list_the_conversation_and_the_composer() {
let mut model = seated();
let shown = painted(&mut model);
for expected in [
"channels",
"(this box's own engine)",
"home (named) 2 conversations",
"conversations",
"port the paint probe [quiescent] 42s",
"conversation",
"op",
"port it",
crate::ui::composer::SEND,
] {
assert!(
shown.contains(expected),
"{expected:?} is not on the glass:\n{shown}"
);
}
}
#[test]
fn an_empty_window_says_what_each_pane_is_waiting_for() {
let mut model = Model::default();
let shown = painted(&mut model);
for expected in [
crate::ui::roster::NO_CHANNEL,
crate::ui::convs::NO_WALL,
crate::ui::chat::NO_CONVERSATION,
crate::ui::composer::NOWHERE,
] {
assert!(
shown.contains(expected),
"{expected:?} is not on the glass:\n{shown}"
);
}
}
#[test]
fn a_notice_stands_where_the_content_would_have_been_and_says_whose_it_is() {
for (notice, expected) in [
(
Notice::Refused("unknown workspace \"hoem\"".to_owned()),
"the engine refused: unknown workspace \"hoem\"",
),
(
Notice::Unreadable("cannot paint a \"board\" answer".to_owned()),
"this seat could not read the answer: cannot paint a \"board\" answer",
),
] {
let mut model = Model {
notice: Some(notice),
..seated()
};
let shown = painted(&mut model);
assert!(shown.contains(expected), "{expected:?}:\n{shown}");
assert!(
shown.contains("home (named) 2 conversations"),
"a refusal about one pane does not stop the others:\n{shown}"
);
}
}
#[test]
fn a_notice_can_be_put_down() {
let mut model = Model {
notice: Some(Notice::Refused("no".to_owned())),
..seated()
};
let window = Window::new();
click(&window, DISMISS, |ctx| render(ctx, &mut model));
assert_eq!(model.notice, None);
}