Files
2026-07-30 20:56:50 +08:00

73 lines
2.7 KiB
Python

import sys
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
from app.server import sync_progress_from_events
class TurnProgressionTests(unittest.TestCase):
def test_turn_ended_advances_to_next_player(self) -> None:
metadata = {
"GameStartConfiguration": {
"NumberOfPlayersAsInt": 2,
"Players": {
"$values": [
{"Color": "Yellow", "SittingOrder": 0},
{"Color": "Blue", "SittingOrder": 1},
]
},
},
"PlayerMetadata": [
{"PlayerNetworkId": "player-yellow", "NickName": "Yellow"},
{"PlayerNetworkId": "player-blue", "NickName": "Blue"},
],
"NetworkGameProgressInformation": {},
}
game = {
"metadata": metadata,
"events": [
{"$type": "BoardGameRules.Entities.GamePhases.Events.TurnStarted, Assembly-CSharp", "PlayerColor": "Yellow"},
{"$type": "BoardGameRules.Entities.GamePhases.Events.TurnEnded, Assembly-CSharp"},
],
}
sync_progress_from_events(game)
self.assertEqual(metadata["NetworkGameProgressInformation"]["CurrentPlayerId"], "player-blue")
def test_turn_started_after_turn_ended_is_accepted(self) -> None:
metadata = {
"GameStartConfiguration": {
"NumberOfPlayersAsInt": 2,
"Players": {
"$values": [
{"Color": "Yellow", "SittingOrder": 0},
{"Color": "Blue", "SittingOrder": 1},
]
},
},
"PlayerMetadata": [
{"PlayerNetworkId": "player-yellow", "NickName": "Yellow"},
{"PlayerNetworkId": "player-blue", "NickName": "Blue"},
],
"NetworkGameProgressInformation": {},
}
game = {
"metadata": metadata,
"events": [
{"$type": "BoardGameRules.Entities.GamePhases.Events.TurnStarted, Assembly-CSharp", "PlayerColor": "Yellow"},
{"$type": "BoardGameRules.Entities.GamePhases.Events.TurnEnded, Assembly-CSharp"},
{"$type": "BoardGameRules.Entities.GamePhases.Events.TurnStarted, Assembly-CSharp", "PlayerColor": "Blue"},
],
}
sync_progress_from_events(game)
self.assertEqual(metadata["NetworkGameProgressInformation"]["CurrentPlayerId"], "player-blue")
if __name__ == "__main__":
unittest.main()