"""Regression coverage for application dependency module imports.""" import importlib import sys from pathlib import Path import pytest def test_dependency_module_compiles(): """Database initialization dependencies remain valid Python syntax.""" module_path = Path(__file__).parents[1] / "app" / "core" / "deps.py" compile(module_path.read_text(encoding="utf-8"), str(module_path), "exec") @pytest.mark.parametrize( ("database_url", "expected_url"), [ ("sqlite:///./pingwatch.db", "sqlite+aiosqlite:///./pingwatch.db"), ( "sqlite+aiosqlite:///./pingwatch.db", "sqlite+aiosqlite:///./pingwatch.db", ), ], ) def test_dependency_module_normalizes_sqlite_url_once( monkeypatch, database_url, expected_url ): """Plain SQLite URLs gain the async driver without duplicating an existing one.""" monkeypatch.setenv("DATABASE_URL", database_url) sys.modules.pop("app.core.deps", None) sys.modules.pop("app.config", None) deps = importlib.import_module("app.core.deps") assert str(deps.engine.url) == expected_url def test_dependency_module_initializes_with_default_sqlite_url(monkeypatch): """The default database setting can initialize the asynchronous dependency.""" monkeypatch.delenv("DATABASE_URL", raising=False) sys.modules.pop("app.core.deps", None) sys.modules.pop("app.config", None) deps = importlib.import_module("app.core.deps") assert str(deps.engine.url) == "sqlite+aiosqlite:///./pingwatch.db"