diff --git a/server/tests/movement.rs b/server/tests/movement.rs index 7b3600d4b..27c11fe57 100644 --- a/server/tests/movement.rs +++ b/server/tests/movement.rs @@ -52,3 +52,31 @@ fn movement_validated_within_app() { assert!(app.world().get::(mover).is_none()); assert!(app.world().get::(blocked).is_none()); } + +#[test] +fn entity_collision_blocks_movement() { + let mut app = App::new(); + app.add_plugins(SimulationPlugin); + app.insert_resource(WalkabilityMap::new(10, 10, 1)); + + // Stationary entity at (5,4) + app.world_mut().spawn(TilePosition::new(5, 4, 0)); + + // Mover tries to move into occupied tile + let mover = app + .world_mut() + .spawn(( + TilePosition::new(5, 5, 0), + MoveIntent { + target: TilePosition::new(5, 4, 0), + }, + )) + .id(); + + app.update(); + + assert_eq!( + *app.world().get::(mover).unwrap(), + TilePosition::new(5, 5, 0) + ); +}