Files
hockey_new/tests/test_build92_numerical_penalty_labels.py

58 lines
2.0 KiB
Python

from hockey_data.service import HockeyDataService
def penalty(side):
return {
"side": side,
"infraction": {"id": "minor"},
"preset": "2m",
"durationMs": 120000,
"remainingMs": 120000,
"finished": False,
}
def payload(home, away, labels=None):
settings = {
"strength_regulation_skaters": 5,
"strength_regular_overtime_skaters": 3,
"strength_playoff_overtime_skaters": 5,
"strength_min_skaters": 3,
"strength_state_labels": labels or {
"regulation": {
"5x4": {"ru": "Играют в большинстве"},
"5x3": {"ru": "5 на 3"},
"4x4": {"ru": "4 на 4"},
"4x3": {"ru": "4 на 3"},
}
},
}
timer_state = {"penalty_board": {"penalties": [penalty("home") for _ in range(home)] + [penalty("away") for _ in range(away)]}}
return HockeyDataService._strength_payload(settings, stage="regular", current_period="1", timer_state=timer_state, language="ru")
def test_one_home_penalty_uses_5_on_4_on_penalized_side():
result = payload(1, 0)
assert result["home_label"] == "5 на 4"
assert result["away_label"] == "Играют в большинстве"
def test_two_home_penalties_use_5_on_3_condition():
result = payload(2, 0)
assert result["home_label"] == "5 на 3"
assert result["away_label"] == "5 на 3"
def test_equal_mutual_penalties_use_equal_numeric_condition_on_both_sides():
result = payload(1, 1)
assert result["home_label"] == "4 на 4"
assert result["away_label"] == "4 на 4"
def test_complex_two_vs_one_keeps_majority_caption_and_numeric_penalty_side():
labels = {"regulation": {"4x3": {"ru": "Большинство 4 на 3"}}}
result = payload(2, 1, labels)
assert result["advantage_side"] == "away"
assert result["home_label"] == "4 на 3"
assert result["away_label"] == "Большинство 4 на 3"