from server.config import ServerSettings from server.grid import GridManager from server.models import ActionPayload, ActionType, GridInitRequest def test_grid_creation_respects_dimensions(default_grid_request): settings = ServerSettings(grid_rows=2, grid_cols=2) manager = GridManager(settings) request = GridInitRequest(**default_grid_request) grid = manager.create_grid(request) descriptor = grid.describe() assert descriptor.grid_id assert descriptor.rows == 3 assert descriptor.columns == 3 assert len(descriptor.cells) == 9 assert descriptor.metadata.get("width") == 640 assert descriptor.metadata.get("height") == 480 def test_grid_action_records_history(default_grid_request): manager = GridManager(ServerSettings()) request = GridInitRequest(**default_grid_request) grid = manager.create_grid(request) descriptor = grid.describe() target_cell = descriptor.cells[0].cell_id payload = ActionPayload( grid_id=descriptor.grid_id, action=ActionType.CLICK, target_cell=target_cell, comment="click test", ) result = grid.apply_action(payload) assert result.success assert result.coordinates is not None assert grid.action_history[-1]["coordinates"] == result.coordinates def test_manager_get_grid_missing(default_grid_request): manager = GridManager(ServerSettings()) request = GridInitRequest(**default_grid_request) _ = manager.create_grid(request) try: manager.get_grid("does-not-exist") found = True except KeyError: found = False assert not found