Harden location db startup validation
This commit is contained in:
+41
-2
@@ -1,12 +1,51 @@
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from alembic import command
|
||||
from alembic.config import Config
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.config import get_settings
|
||||
from app.main import create_app
|
||||
|
||||
|
||||
def _make_alembic_config(database_url: str) -> Config:
|
||||
config = Config("alembic.ini")
|
||||
config.set_main_option("sqlalchemy.url", database_url)
|
||||
return config
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app():
|
||||
return create_app()
|
||||
def test_database_urls(tmp_path: Path, monkeypatch: pytest.MonkeyPatch):
|
||||
location_database_path = tmp_path / "location_test.db"
|
||||
poo_database_path = tmp_path / "poo_placeholder.db"
|
||||
location_database_url = f"sqlite:///{location_database_path}"
|
||||
poo_database_url = f"sqlite:///{poo_database_path}"
|
||||
|
||||
monkeypatch.setenv("LOCATION_DATABASE_URL", location_database_url)
|
||||
monkeypatch.setenv("POO_DATABASE_URL", poo_database_url)
|
||||
get_settings.cache_clear()
|
||||
|
||||
try:
|
||||
yield {
|
||||
"location_path": location_database_path,
|
||||
"location_url": location_database_url,
|
||||
"poo_path": poo_database_path,
|
||||
"poo_url": poo_database_url,
|
||||
}
|
||||
finally:
|
||||
get_settings.cache_clear()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ready_location_database(test_database_urls):
|
||||
command.upgrade(_make_alembic_config(test_database_urls["location_url"]), "head")
|
||||
return test_database_urls
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app(ready_location_database):
|
||||
yield create_app()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
Reference in New Issue
Block a user