поправлены сложные удаления
This commit is contained in:
65
tests/test_build88_complex_penalty_display.py
Normal file
65
tests/test_build88_complex_penalty_display.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from pathlib import Path
|
||||
|
||||
from hockey_data.service import HockeyDataService
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
APP_JS = (ROOT / "ui_builder/static/app.js").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def _penalty(side: str, remaining: int = 90000) -> dict:
|
||||
return {
|
||||
"side": side,
|
||||
"infraction": {"code": "TEST"},
|
||||
"preset": "2",
|
||||
"durationMs": 120000,
|
||||
"remainingMs": remaining,
|
||||
"finished": False,
|
||||
}
|
||||
|
||||
|
||||
def test_complex_two_vs_one_keeps_real_strength_but_hides_pp_caption_until_one_side_clears():
|
||||
settings = {
|
||||
"strength_regulation_skaters": 5,
|
||||
"strength_min_skaters": 3,
|
||||
"strength_state_labels": {"regulation": {"4x3": {"ru": "Играют в большинстве", "en": "Power play"}}},
|
||||
}
|
||||
value = HockeyDataService._strength_payload(
|
||||
settings,
|
||||
stage="regular",
|
||||
current_period="2",
|
||||
timer_state={"penalty_board": {"penalties": [_penalty("home"), _penalty("home"), _penalty("away")] }},
|
||||
language="ru",
|
||||
)
|
||||
assert value["strength_label"] == "3×4"
|
||||
assert value["advantage_side"] == "away"
|
||||
assert value["home_label"] == ""
|
||||
assert value["away_label"] == ""
|
||||
|
||||
|
||||
def test_single_remaining_penalty_outputs_pp_caption_on_opposite_team():
|
||||
settings = {
|
||||
"strength_regulation_skaters": 5,
|
||||
"strength_min_skaters": 3,
|
||||
"strength_state_labels": {"regulation": {"5x4": {"ru": "Играют в большинстве", "en": "Power play"}}},
|
||||
}
|
||||
value = HockeyDataService._strength_payload(
|
||||
settings,
|
||||
stage="regular",
|
||||
current_period="2",
|
||||
timer_state={"penalty_board": {"penalties": [_penalty("home")] }},
|
||||
language="ru",
|
||||
)
|
||||
assert value["advantage_side"] == "away"
|
||||
assert value["home_label"] == ""
|
||||
assert value["away_label"] == "Играют в большинстве"
|
||||
|
||||
|
||||
def test_display_plan_keeps_each_side_while_both_have_penalties_and_clears_when_none():
|
||||
start = APP_JS.index("function penaltyDisplayEntriesByTargetSide")
|
||||
end = APP_JS.index("function hockeyPenaltySideMappingDetail", start)
|
||||
block = APP_JS[start:end]
|
||||
assert 'if (home.length && away.length)' in block
|
||||
assert 'return { home: take(home), away: take(away), routedToAdvantage: false, advantageSide: "" };' in block
|
||||
assert 'return { home: [], away: take(home), routedToAdvantage: true, advantageSide: "away" };' in block
|
||||
assert 'return { home: take(away), away: [], routedToAdvantage: true, advantageSide: "home" };' in block
|
||||
assert 'return { home: [], away: [], routedToAdvantage: false, advantageSide: "" };' in block
|
||||
Reference in New Issue
Block a user