create MemoryGameBoardStore Class and rework Building of Game Board Storage
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user