HatmanStack commited on
Commit
8d992b4
·
1 Parent(s): 6670270

test(state): add tests for session state management functions

Browse files
Files changed (1) hide show
  1. tests/test_state.py +121 -0
tests/test_state.py ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Tests for session state management functions."""
2
+
3
+ from unittest.mock import patch
4
+
5
+ import pandas as pd
6
+ import pytest
7
+
8
+ from src.config import DIFFICULTY_PRESETS
9
+
10
+
11
+ class TestInitSessionState:
12
+ """Tests for init_session_state."""
13
+
14
+ def test_initializes_all_expected_keys(self) -> None:
15
+ """Verify all default keys are created."""
16
+ state: dict = {}
17
+ with patch("src.state.session.st") as mock_st:
18
+ mock_st.session_state = state
19
+ from src.state.session import init_session_state
20
+
21
+ init_session_state()
22
+
23
+ expected_keys = {
24
+ "home_team",
25
+ "away_team",
26
+ "away_team_df",
27
+ "away_stats",
28
+ "home_team_df",
29
+ "radio_index",
30
+ }
31
+ assert set(state.keys()) == expected_keys
32
+
33
+ def test_does_not_overwrite_existing_values(self) -> None:
34
+ """Verify calling init twice does not overwrite existing values."""
35
+ state: dict = {"home_team": ["Player A"]}
36
+ with patch("src.state.session.st") as mock_st:
37
+ mock_st.session_state = state
38
+ from src.state.session import init_session_state
39
+
40
+ init_session_state()
41
+
42
+ assert state["home_team"] == ["Player A"]
43
+
44
+ def test_sets_correct_default_away_stats(self) -> None:
45
+ """Verify away_stats defaults to Regular difficulty preset."""
46
+ state: dict = {}
47
+ with patch("src.state.session.st") as mock_st:
48
+ mock_st.session_state = state
49
+ from src.state.session import init_session_state
50
+
51
+ init_session_state()
52
+
53
+ assert state["away_stats"] == list(DIFFICULTY_PRESETS["Regular"])
54
+
55
+ def test_sets_empty_dataframes_by_default(self) -> None:
56
+ """Verify DataFrames start empty."""
57
+ state: dict = {}
58
+ with patch("src.state.session.st") as mock_st:
59
+ mock_st.session_state = state
60
+ from src.state.session import init_session_state
61
+
62
+ init_session_state()
63
+
64
+ assert isinstance(state["away_team_df"], pd.DataFrame)
65
+ assert state["away_team_df"].empty
66
+ assert isinstance(state["home_team_df"], pd.DataFrame)
67
+ assert state["home_team_df"].empty
68
+
69
+
70
+ class TestGetAwayStats:
71
+ """Tests for get_away_stats."""
72
+
73
+ def test_returns_stats_from_session(self) -> None:
74
+ """Verify returns stats when properly set in session."""
75
+ state: dict = {"away_stats": [100, 200, 300, 400]}
76
+ with patch("src.state.session.st") as mock_st:
77
+ mock_st.session_state = state
78
+ from src.state.session import get_away_stats
79
+
80
+ result = get_away_stats()
81
+
82
+ assert result == [100, 200, 300, 400]
83
+
84
+ def test_returns_defaults_when_invalid(self) -> None:
85
+ """Verify returns defaults when away_stats is invalid."""
86
+ state: dict = {"away_stats": "invalid"}
87
+ with patch("src.state.session.st") as mock_st:
88
+ mock_st.session_state = state
89
+ from src.state.session import get_away_stats
90
+
91
+ result = get_away_stats()
92
+
93
+ assert result == list(DIFFICULTY_PRESETS["Regular"])
94
+
95
+
96
+ class TestGetHomeTeamDf:
97
+ """Tests for get_home_team_df."""
98
+
99
+ def test_returns_dataframe_from_session(self) -> None:
100
+ """Verify returns DataFrame when set in session."""
101
+ expected_df = pd.DataFrame({"FULL_NAME": ["Player A"]})
102
+ state: dict = {"home_team_df": expected_df}
103
+ with patch("src.state.session.st") as mock_st:
104
+ mock_st.session_state = state
105
+ from src.state.session import get_home_team_df
106
+
107
+ result = get_home_team_df()
108
+
109
+ pd.testing.assert_frame_equal(result, expected_df)
110
+
111
+ def test_returns_empty_dataframe_when_not_set(self) -> None:
112
+ """Verify returns empty DataFrame when not set."""
113
+ state: dict = {}
114
+ with patch("src.state.session.st") as mock_st:
115
+ mock_st.session_state = state
116
+ from src.state.session import get_home_team_df
117
+
118
+ result = get_home_team_df()
119
+
120
+ assert isinstance(result, pd.DataFrame)
121
+ assert result.empty