Files
PingWatch/backend/tests/test_deps_import.py
T

49 lines
1.5 KiB
Python

"""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"