from __future__ import annotations
import asyncio
import json
<<<<<<< HEAD
import shutil
import subprocess
from pathlib import Path
import pytest
=======
from pathlib import Path
>>>>>>> e4bedb1264fca8a6bc8a41f0ca1ff67b176c6651
from sqlalchemy import select
from hockey_data.agent_bridge import VmixAgentHub
from hockey_data.auth_bridge import HockeyUser
from hockey_data.models import VmixDevice, VmixMappingField, VmixMappingProfile
from tests.support import LocalTestDatabase
ROOT = Path(__file__).resolve().parents[1]
JS = (ROOT / "hockey_data/static/admin-directories.js").read_text(encoding="utf-8")
CSS = (ROOT / "hockey_data/static/admin-directories.css").read_text(encoding="utf-8")
BRIDGE = (ROOT / "hockey_data/agent_bridge.py").read_text(encoding="utf-8")
def test_mapping_config_list_is_compact_and_has_copy_action() -> None:
assert 'data-map-copy-profile="${item.id}"' in JS
assert 'title="Копировать конфиг"' in JS
assert '>⧉' in JS
<<<<<<< HEAD
assert '${isCurrent ? "✓" : (isUsed ? "↻" : "▶")}' in JS
assert "Обновить мой Agent с v" in JS
assert "${escapeHtml(item.name)}" in JS and "${escapeHtml(item.created_by)}" in JS
=======
assert '${isUsed ? "✓" : "▶"}' in JS
>>>>>>> e4bedb1264fca8a6bc8a41f0ca1ff67b176c6651
assert 'hockey-map-profile-actions' in CSS
assert 'hockey-map-profile-icon' in CSS
assert 'width:28px;height:28px' in CSS
assert '/profiles/${profileId}/duplicate' in JS
assert 'Копия «${created.name}» создана' in JS
<<<<<<< HEAD
node = shutil.which("node")
if node is None:
pytest.skip("Node is required for the actual Mapping row renderer check")
script = r'''
const fs=require('node:fs'),vm=require('node:vm'),assert=require('node:assert/strict');
const source=fs.readFileSync(0,'utf8');
const escape=source.slice(source.indexOf(' const escapeHtml ='),source.indexOf(' const normalizeTeamColorHex ='));
const start=source.indexOf(' const profileButtons =');
const rows=source.slice(start,source.indexOf(' const loadErrors =',start));
function render(mapping){
return vm.runInNewContext(escape+'\n'+rows+'\nprofileButtons',{
profiles:[{id:42,version:2,name:'
',created_by:'">