create MemoryGameBoardStore Class and rework Building of Game Board Storage

This commit is contained in:
2026-04-04 12:34:00 +02:00
parent 4547e3443b
commit a1c4a4b68d
5 changed files with 74 additions and 34 deletions
+23 -9
View File
@@ -1,10 +1,12 @@
import unittest
from typing import Any, cast
from server.GameBoard import GameBoard
from server.GameStateStore import GameStateStore
from server.game_board_stats import GameBoardStoreBuilder
from server.game_board_stats.MemoryGameBoardStore import MemoryGameBoardStore
from server.game_board_stats.RedisGameBoardStore import RedisGameBoardStore
from snakes.TemplateSnake import TemplateSnake
class _FakeRedis:
def __init__(self):
self.data = {}
@@ -70,21 +72,33 @@ class TestGameStateStore(unittest.IsolatedAsyncioTestCase):
)
return board
async def test_memory_backend_returns_none(self):
store = GameStateStore(backend="memory")
def test_builder_selects_store_backend(self):
memory_store = GameBoardStoreBuilder.build(backend="memory")
redis_store = GameBoardStoreBuilder.build(backend="redis")
default_store = GameBoardStoreBuilder.build(backend="unknown")
self.assertIsInstance(memory_store, MemoryGameBoardStore)
self.assertIsInstance(redis_store, RedisGameBoardStore)
self.assertIsInstance(default_store, MemoryGameBoardStore)
async def test_memory_backend_roundtrip(self):
store = MemoryGameBoardStore()
board = self._build_board()
await store.save("game-1", board)
loaded = await store.load("game-1")
self.assertIsNone(loaded)
loaded = cast(GameBoard, await store.load("game-1"))
self.assertIsNotNone(loaded)
self.assertEqual(loaded.id, "game-1")
await store.delete("game-1")
self.assertIsNone(await store.load("game-1"))
async def test_redis_backend_roundtrip(self):
store = GameStateStore(backend="redis")
store._redis = _FakeRedis()
store = RedisGameBoardStore()
store._redis = cast(Any, _FakeRedis())
board = self._build_board()
await store.save("game-1", board)
loaded = await store.load("game-1")
loaded = cast(GameBoard, await store.load("game-1"))
self.assertIsNotNone(loaded)
self.assertEqual(loaded.id, "game-1")
self.assertEqual(loaded.get_turn(), 3)