идентификаторы удалений, заготовки
This commit is contained in:
84
tests/test_build86_penalty_context_prepared_titles.py
Normal file
84
tests/test_build86_penalty_context_prepared_titles.py
Normal file
@@ -0,0 +1,84 @@
|
||||
from pathlib import Path
|
||||
|
||||
from hockey_data.auth_bridge import HockeyUser
|
||||
from hockey_data.mapping_context import MappingDataService
|
||||
from tests.support import LocalTestDatabase
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
APP = (ROOT / "ui_builder/static/app.js").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_prepared_titles_is_forced_to_last_runtime_tab_and_uses_hockey_api_directly():
|
||||
assert 'state.config.tabs = state.config.tabs.filter((tab) => tab?.id !== "prepared_titles")' in APP
|
||||
assert 'state.config.tabs.push({ id: "prepared_titles", label: "Заготовки" });' in APP
|
||||
# BUILD84 accidentally routed these through boot.api (/api/ui-builder/runtime), producing 404 Not Found.
|
||||
prepared_slice = APP[APP.index("async function hockeyLoadPreparedMappingSources"):APP.index("function renderHockeyPreparedTitlesWorkspace")]
|
||||
assert 'api(`/api/hockey/prepared-titles' not in prepared_slice
|
||||
assert 'api("/api/hockey/prepared-titles' not in prepared_slice
|
||||
assert 'hockeyGameControlRequest(`/prepared-titles' in prepared_slice
|
||||
assert 'hockeyGameControlRequest(`/agents/vmix-inventory' in prepared_slice
|
||||
|
||||
|
||||
def test_prepared_title_browser_keeps_title_inputs_visible_even_without_field_inventory():
|
||||
start = APP.index("function hockeyPreparedInventoryInputs")
|
||||
end = APP.index("function hockeyPreparedSourceIdentity", start)
|
||||
block = APP[start:end]
|
||||
assert 'fields.length > 0' in block
|
||||
assert '(GT|XAML|TITLE)' in block
|
||||
|
||||
|
||||
def test_penalty_side_context_is_match_shared_between_operator_and_admin(tmp_path):
|
||||
db = LocalTestDatabase(tmp_path / "ctx.sqlite3")
|
||||
db.create_all()
|
||||
service = MappingDataService(db)
|
||||
operator = HockeyUser(id="op", login="operator", display_name="Operator")
|
||||
admin = HockeyUser(id="admin", login="admin", display_name="Admin")
|
||||
|
||||
service.set_context_value("selected_home_penalty_id", "pen-home-17", operator, {"game_id": "game-1"})
|
||||
service.set_context_value("selected_away_penalty_id", "pen-away-9", operator, {"game_id": "game-1"})
|
||||
context, variables = service.resolve_context(admin, {"game_id": "game-1"})
|
||||
values = {item["key"]: item.get("value", "") for item in variables}
|
||||
|
||||
assert context["selected_home_penalty_id"] == "pen-home-17"
|
||||
assert context["selected_away_penalty_id"] == "pen-away-9"
|
||||
assert values["selected_home_penalty_id"] == "pen-home-17"
|
||||
assert values["selected_away_penalty_id"] == "pen-away-9"
|
||||
|
||||
|
||||
def test_context_batch_route_precedes_dynamic_context_key_route(tmp_path):
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
from hockey_data.agent_bridge import VmixAgentHub, create_hockey_agent_router
|
||||
|
||||
db = LocalTestDatabase(tmp_path / "batch.sqlite3")
|
||||
db.create_all()
|
||||
hub = VmixAgentHub(db) # type: ignore[arg-type]
|
||||
user = HockeyUser(id="op", login="operator", display_name="Operator")
|
||||
|
||||
async def auth():
|
||||
return user
|
||||
|
||||
app = FastAPI()
|
||||
app.include_router(create_hockey_agent_router(hub, auth_dependency=auth))
|
||||
client = TestClient(app)
|
||||
response = client.post(
|
||||
"/api/hockey/context/batch",
|
||||
json={
|
||||
"values": {
|
||||
"selected_home_penalty_id": "pen-home-17",
|
||||
"selected_home_penalty_player_id": "777",
|
||||
"selected_home_penalty_player_db_id": "42",
|
||||
"selected_home_penalty_team_penalty": "0",
|
||||
},
|
||||
"context": {"game_id": "game-1"},
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200, response.text
|
||||
payload = response.json()
|
||||
assert payload["ok"] is True
|
||||
assert {item["key"] for item in payload["items"]} == {
|
||||
"selected_home_penalty_id",
|
||||
"selected_home_penalty_player_id",
|
||||
"selected_home_penalty_player_db_id",
|
||||
"selected_home_penalty_team_penalty",
|
||||
}
|
||||
Reference in New Issue
Block a user