File size: 2,587 Bytes
bb3fbf9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import pytest

from engine.game.enums import Phase
from engine.game.game_state import GameState
from engine.game.serializer import serialize_state
from engine.models.card import LiveCard, MemberCard


def test_performance_results_serialization():
    gs = GameState()
    gs.member_db = {}
    gs.live_db = {}

    # Setup players with a live and a member
    p0 = gs.players[0]
    p1 = gs.players[1]

    # Add dummy data to DB
    card_id = 1001
    live_id = 9001

    member = MemberCard(
        card_id=card_id,
        card_no="TEST-001",
        name="Test Singer",
        cost=1,
        blades=1,
        hearts=[1, 0, 0, 0, 0, 0, 0],
        blade_hearts=[0, 0, 0, 0, 0, 0, 0],
        abilities=[],
    )
    live = LiveCard(
        card_id=live_id,
        name="Test Live",
        card_no="LIVE-001",
        score=1,
        required_hearts=[1, 0, 0, 0, 0, 0, 0],
        abilities=[],
    )

    GameState.member_db[card_id] = member
    GameState.live_db[live_id] = live
    gs.member_db = GameState.member_db
    gs.live_db = GameState.live_db

    # Setup P0 stage and live
    p0.stage[0] = card_id
    p0.live_zone = [live_id]

    # Run performance for P0
    gs.phase = Phase.PERFORMANCE_P1
    gs._do_performance(0)

    # Verify performance_results for P0 exists
    assert 0 in gs.performance_results
    assert gs.performance_results[0]["success"] is True

    # Now simulate moving to LIVE_RESULT
    gs.phase = Phase.LIVE_RESULT
    gs._do_live_result()

    # In LIVE_RESULT, turn has advanced (Phase 1), current player is first_player
    # After _do_live_result, it should have copied into last_performance_results
    assert hasattr(gs, "last_performance_results")
    assert gs.last_performance_results is not None
    assert 0 in gs.last_performance_results

    # Serialize state
    serialized = serialize_state(gs)

    # Check if last_performance_results is in serialized output
    assert "last_performance_results" in serialized
    assert "0" in serialized["last_performance_results"] or 0 in serialized["last_performance_results"]

    # Check content
    perf_0 = (
        serialized["last_performance_results"]["0"]
        if "0" in serialized["last_performance_results"]
        else serialized["last_performance_results"][0]
    )
    assert perf_0["success"] is True
    assert len(perf_0["member_contributions"]) == 1
    assert perf_0["member_contributions"][0]["name"] == "Test Singer"


if __name__ == "__main__":
    pytest.main([__file__])