from __future__ import annotations

import asyncio
from pathlib import Path

from device_gateway.app import admin_page, admin_status, target_store
from device_gateway.state import TargetStore


def test_admin_page_and_status(tmp_path: Path) -> None:
    target_store.path = tmp_path / "targets.json"
    page = asyncio.run(admin_page())
    assert page.status_code == 200
    assert "ESP32 Device Lab" in Path(page.path).read_text(encoding="utf-8")
    status = asyncio.run(admin_status())
    assert status["server"]["type"] == "server_snapshot"


def test_target_store_persists(tmp_path: Path) -> None:
    path = tmp_path / "targets.json"
    TargetStore(path).set("device-1", "pi:session-1")
    assert TargetStore(path).get("device-1") == "agent:pi:session-1"
    assert TargetStore(path).get("unknown") == "server"
