49 lines
1.5 KiB
Python
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"
|