Files
2026-03-08 09:16:44 +08:00

44 lines
1.6 KiB
Python

from __future__ import annotations
from game.state_manager import StateManager
from game.story_engine import StoryEngine
from services.persistence import SQLitePersistence
def test_state_persistence_roundtrip(test_db_path):
persistence = SQLitePersistence(test_db_path)
story_engine = StoryEngine()
state_manager = StateManager(persistence, story_engine)
state_manager.create_new_room("ROOM01", "host01", "Host")
state_manager.add_player("ROOM01", "p02", "Bob")
room = persistence.get_room("ROOM01")
assert room is not None
assert room["game_state"]["room_id"] == "ROOM01"
assert "p02" in room["game_state"]["inventory_by_player"]
room["game_state"]["global_flags"]["truth_revealed"] = True
state_manager.set_room_state("ROOM01", "running", room["game_state"])
persistence2 = SQLitePersistence(test_db_path)
room2 = persistence2.get_room("ROOM01")
assert room2 is not None
assert room2["status"] == "running"
assert room2["game_state"]["global_flags"]["truth_revealed"] is True
def test_snapshot_contains_players_and_messages(test_db_path):
persistence = SQLitePersistence(test_db_path)
story_engine = StoryEngine()
state_manager = StateManager(persistence, story_engine)
state_manager.create_new_room("ROOM02", "host02", "Host")
persistence.add_or_update_player("ROOM02", "p03", "Carol")
persistence.append_message("ROOM02", "system", "hello")
snapshot = persistence.load_room_snapshot("ROOM02")
assert snapshot is not None
assert len(snapshot["players"]) == 2
assert snapshot["messages"][0]["content"] == "hello"