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

64 lines
2.4 KiB
Python

from __future__ import annotations
import json
from pathlib import Path
from ui_builder.manager import UIBuilderManager
def test_hockey_legacy_space_ctrl_r_component_shortcuts_are_removed_and_persisted(tmp_path: Path) -> None:
manager = UIBuilderManager(tmp_path, filename="ui.json")
payload = {
"version": 21,
"project_name": "Hockey",
"data_source": "hockey",
"canvas": {"width": 1440, "height": 900},
"tabs": [{"id": "main", "label": "Игра"}],
"components": [
{
"id": "timer",
"type": "hockey_game_control",
"title": "Игра",
"action_id": "hockey_game_timer",
"shortcuts": [
{"id": "old-space", "enabled": True, "combo": "Space", "event": "timer_toggle"},
{"id": "old-reset", "enabled": True, "combo": "Ctrl+R", "event": "timer_reset"},
{"id": "keep-f8", "enabled": True, "combo": "F8", "event": "click"},
],
}
],
"triggers": [],
"shortcut_sequences": [
{
"id": "visible-space-sequence",
"name": "Таймеры",
"enabled": True,
"combo": "Space",
"steps": [],
}
],
}
manager.settings_file.write_text(json.dumps(payload, ensure_ascii=False), encoding="utf-8")
loaded = manager.load()
assert [item["combo"] for item in loaded["components"][0]["shortcuts"]] == ["F8"]
assert loaded["shortcut_sequences"][0]["combo"] == "Space"
persisted = json.loads(manager.settings_file.read_text(encoding="utf-8"))
assert [item["combo"] for item in persisted["components"][0]["shortcuts"]] == ["F8"]
assert persisted["shortcut_sequences"][0]["combo"] == "Space"
def test_hockey_templates_do_not_create_hidden_space_ctrl_r_bindings() -> None:
app_js = Path("ui_builder/static/app.js").read_text(encoding="utf-8")
assert 'id: "hockey-dashboard-space"' not in app_js
assert 'id: "hockey-dashboard-reset"' not in app_js
assert 'id: "hockey-game-space"' not in app_js
assert 'id: "hockey-game-reset"' not in app_js
assert "stripLegacyHockeyComponentShortcuts" in app_js
# The visible Shortcut Sequence preset is intentionally still available.
assert 'name: "Старт игрового времени"' in app_js
assert 'combo: "Space"' in app_js