test: distinguish rename Escape from canvas key notification

This commit is contained in:
2026-09-12 23:46:26 -07:00
parent 0ecdadbb9c
commit 44095f78c2
@@ -804,13 +804,25 @@ fn captured_escape(app: &App) -> Vec<Message> {
.unwrap();
let _entered = runtime.enter();
let mut messages = Vec::new();
let mut keyboard_boundaries = 0;
for recipe in subscription::into_recipes(app.subscription()) {
let mut output = recipe.stream(Box::pin(stream::iter([event.clone()])));
let mut context = PollContext::from_waker(noop_waker_ref());
while let Poll::Ready(Some(message)) = output.poll_next_unpin(&mut context) {
messages.push(message);
if matches!(
&message,
Message::WorkDrag(crate::app::allocation_drag::Event::KeyboardBoundary)
) {
keyboard_boundaries += 1;
} else {
messages.push(message);
}
}
}
assert_eq!(
keyboard_boundaries, 1,
"each key has exactly one passive allocation notification"
);
messages
}
@@ -843,11 +855,13 @@ fn actual_captured_escape_closes_only_its_priority_owner_and_retains_worker() {
let before = evidence(&app);
let mut messages = captured_escape(&app);
assert_eq!(messages.len(), 1);
assert!(matches!(messages[0], Message::Escape));
send(&mut app, messages.remove(0));
if other_modal != 0 {
assert!(app.source_rename.open(), "existing modal has priority");
let mut messages = captured_escape(&app);
assert_eq!(messages.len(), 1);
assert!(matches!(messages[0], Message::Escape));
send(&mut app, messages.remove(0));
}
assert!(!app.source_rename.open());