Add observer_no_target test back

This commit is contained in:
Tim Blackbird 2025-07-17 16:51:34 +02:00
parent 21602eab7f
commit f17ecc8d89

View File

@ -527,6 +527,11 @@ mod tests {
#[component(storage = "SparseSet")]
struct S;
#[derive(EntityEvent)]
struct EventA;
impl BroadcastEvent for EventA {}
#[derive(EntityEvent)]
struct EntityEventA;
@ -839,6 +844,28 @@ mod tests {
assert_eq!(vec!["add_ab"], world.resource::<Order>().0);
}
#[test]
fn observer_no_target() {
let mut world = World::new();
world.init_resource::<Order>();
let system: fn(On<EventA>) = |_| {
panic!("Trigger routed to non-targeted entity.");
};
world.spawn_empty().observe(system);
world.add_observer(move |obs: On<EventA>, mut res: ResMut<Order>| {
assert_eq!(obs.target(), Entity::PLACEHOLDER);
res.observed("event_a");
});
// TODO: ideally this flush is not necessary, but right now observe() returns WorldEntityMut
// and therefore does not automatically flush.
world.flush();
world.trigger(EventA);
world.flush();
assert_eq!(vec!["event_a"], world.resource::<Order>().0);
}
#[test]
fn observer_entity_routing() {
let mut world = World::new();