from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
JS = (ROOT / "hockey_data" / "static" / "tournament-menu.js").read_text(encoding="utf-8")
ROUTER = (ROOT / "hockey_data" / "router.py").read_text(encoding="utf-8")
CSS = (ROOT / "hockey_data" / "static" / "tournament-menu.css").read_text(encoding="utf-8")


def test_connection_diagnostics_are_admin_only():
    assert '@router.get("/admin/connection-diagnostics", dependencies=admin)' in ROUTER
    assert 'service.database.engine.connect()' in ROUTER
    assert 'service.test_connection()' in ROUTER
    assert 'agent_hub.list_mapping_devices()' in ROUTER
    assert 'required_for_match_selection' in ROUTER
    assert 'required_for_remote_sync' in ROUTER


def test_runtime_knows_admin_before_rendering_navigation():
    assert 'state.isAdmin = Boolean(user?.is_admin);' in JS
    assert 'await ensureAccountScopedRuntimeState();\n    ensureShell();' in JS
    assert '${state.isAdmin ? `' in JS
    assert 'data-open-connection-diagnostics' in JS
    assert 'data-open-settings' in JS


def test_non_admin_does_not_get_misleading_connection_setup_warning():
    assert ': state.isAdmin\n                  ? t("notConfigured")\n                  : t("noGamesLoaded")' in JS
    assert 'if (!state.isAdmin) return;' in JS


def test_failed_match_can_be_diagnosed_with_deep_probe():
    assert 'lastAttemptedGameId' in JS
    assert 'lastGameOpenError' in JS
    assert 'data-match-error-diagnostics' in JS
    assert 'showConnectionDiagnostics({ deep: true })' in JS
    assert 'deep: deep ? "true" : "false"' in JS
    assert '.hockey-connection-diagnostics-card' in CSS
