52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
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
|