"""#1926 observability: app-logger StreamHandler в main.py (логи app.* в stdout).

Без него INFO от `logging.getLogger("app.*")` терялся (в `docker logs` видны были
только uvicorn-логгеры), и полезные строки (OSRM road-distance applied, RBAC,
analyze) были невидимы при отладке на VPS.
"""

from __future__ import annotations

import logging


def test_app_logger_has_stdout_handler() -> None:
    import app.main  # noqa: F401 — module-level logging setup выполняется на импорте

    app_logger = logging.getLogger("app")

    # Уровень INFO (default APP_LOG_LEVEL).
    assert app_logger.level == logging.INFO

    # Ровно один маркированный StreamHandler — идемпотентность (повторный импорт
    # не плодит дубли).
    marked = [h for h in app_logger.handlers if getattr(h, "_gd_app_stream", False)]
    assert len(marked) == 1
    assert isinstance(marked[0], logging.StreamHandler)

    # propagate=True → Sentry/GlitchTip LoggingIntegration (хендлер на root)
    # продолжает получать breadcrumbs/events; stdout-дубля нет (у root своего
    # stdout-хендлера нет).
    assert app_logger.propagate is True
