Task 003: add postgres schema and seed data
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import unittest
|
||||
from importlib.util import find_spec
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[4]
|
||||
BACKEND_ROOT = REPO_ROOT / "apps" / "backend"
|
||||
sys.path.insert(0, str(BACKEND_ROOT))
|
||||
|
||||
|
||||
class PostgresAlembicMigrationIntegrationTest(unittest.TestCase):
|
||||
def test_alembic_upgrade_head_creates_schema_on_configured_postgres(self) -> None:
|
||||
dsn = os.environ.get("PIPELINE_TEST_DATABASE_DSN")
|
||||
if not dsn:
|
||||
self.skipTest("PIPELINE_TEST_DATABASE_DSN is not set")
|
||||
if not dsn.startswith(("postgresql://", "postgres://")):
|
||||
self.skipTest("Postgres DSN is required for Alembic migration test")
|
||||
if find_spec("alembic") is None:
|
||||
self.skipTest("alembic is not installed")
|
||||
|
||||
env = os.environ.copy()
|
||||
env["DATABASE_URL"] = dsn
|
||||
subprocess.run(
|
||||
[sys.executable, "-m", "alembic", "upgrade", "head"],
|
||||
cwd=REPO_ROOT,
|
||||
env=env,
|
||||
check=True,
|
||||
)
|
||||
|
||||
from src.domain.schema import CORE_TABLES
|
||||
from src.infrastructure.repositories import open_backend_repository
|
||||
|
||||
repository = open_backend_repository(dsn)
|
||||
self.assertTrue(set(CORE_TABLES).issubset(repository.schema.list_tables()))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user