58 lines
2.0 KiB
Python
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"
|