test_phase2_wp02_migration_contract.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. from pathlib import Path
  2. ROOT = Path(__file__).resolve().parents[1]
  3. def test_active_metadata_migration_is_additive_traceable_and_non_destructive():
  4. migration = (
  5. ROOT / "migrations/versions/20260730_380_active_metadata_lineage.py"
  6. ).read_text(encoding="utf-8")
  7. assert 'revision = "20260730_380"' in migration
  8. assert 'down_revision = "20260730_370"' in migration
  9. for table in (
  10. "active_metadata_plans",
  11. "active_metadata_runs",
  12. "active_metadata_assets",
  13. "active_metadata_asset_versions",
  14. "active_metadata_changes",
  15. "active_metadata_lineage",
  16. "active_metadata_health_signals",
  17. "active_metadata_corrections",
  18. "active_metadata_correction_audits",
  19. ):
  20. assert f"CREATE TABLE public.{table}" in migration
  21. assert "UNIQUE (plan_uid, batch_key)" in migration
  22. assert "deletion_candidate" in migration
  23. assert "source_field" in migration and "target_field" in migration
  24. assert "failure_reason" in migration
  25. assert "DROP TABLE" not in migration.upper()
  26. assert "DELETE FROM public" not in migration