Files
hockey_new/tests/test_build55_agent_and_account_events.py
2026-08-19 15:08:39 +03:00

65 lines
2.9 KiB
Python

from pathlib import Path
from hockey_data.service import HockeyDataService
from tests.support import LocalTestDatabase
JS = Path("ui_builder/static/app.js").read_text(encoding="utf-8")
HTML = Path("ui_builder/static/index.html").read_text(encoding="utf-8")
AGENT_JS = Path("hockey_data/static/agent-devices.js").read_text(encoding="utf-8")
AGENT_CSS = Path("hockey_data/static/agent-devices.css").read_text(encoding="utf-8")
ROUTER = Path("hockey_data/router.py").read_text(encoding="utf-8")
DATABASE = Path("hockey_data/database.py").read_text(encoding="utf-8")
def test_vmix_agent_is_small_topbar_indicator():
assert 'document.querySelector(".runtime-topbar .runtime-actions")' in AGENT_JS
assert 'toolbar.prepend(root)' in AGENT_JS
assert 'hockey-agent-chip-copy' not in AGENT_JS
assert 'width: 35px;' in AGENT_CSS
assert 'height: 35px;' in AGENT_CSS
assert 'top: calc(100% + 9px);' in AGENT_CSS
assert 'bottom: auto;' in AGENT_CSS
assert 'position: fixed;' not in AGENT_CSS.split('.hockey-agent-panel > header', 1)[0]
def test_account_switch_now_controls_runtime_toasts_without_disabling_triggers():
assert 'id="runtimeEventsToggleBtn"' in HTML
assert 'operatorToastsEnabled: true' in JS
assert 'toggleRuntimeEventsPreference' in JS
assert '"/preferences/toasts"' in JS
assert 'Toast: ВКЛ' in JS
assert '@router.put("/preferences/toasts")' in ROUTER
assert '@router.get("/preferences")' in ROUTER
process_start = JS.index('async function processTriggers(context)')
shortcut_start = JS.index('async function runShortcutSequence')
assert 'if (!state.triggersEnabled) return;' not in JS[process_start:process_start + 900]
assert 'if (!state.triggersEnabled) return;' not in JS[shortcut_start:shortcut_start + 1500]
assert 'state.operatorToastsEnabled === false' in JS
def test_user_preference_defaults_toasts_on_and_persists_per_account(tmp_path):
db = LocalTestDatabase(tmp_path / "prefs.sqlite")
db.create_all()
service = HockeyDataService.__new__(HockeyDataService)
service.database = db
first = service.user_preference(wfl_user_id="operator-a")
second = service.user_preference(wfl_user_id="operator-b")
assert first["triggers_enabled"] is True
assert first["toasts_enabled"] is True
assert second["triggers_enabled"] is True
assert second["toasts_enabled"] is True
saved = service.save_toasts_preference(wfl_user_id="operator-a", enabled=False)
assert saved["triggers_enabled"] is True
assert saved["toasts_enabled"] is False
assert service.user_preference(wfl_user_id="operator-a")["toasts_enabled"] is False
assert service.user_preference(wfl_user_id="operator-b")["triggers_enabled"] is True
def test_additive_schema_repair_includes_user_preferences():
assert 'UserPreference,' in DATABASE
repair_block = DATABASE[DATABASE.index('for model in ('):DATABASE.index('self._validate_game_table()')]
assert 'UserPreference,' in repair_block