test_phase2_wp03_migration_contract.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from pathlib import Path
  2. ROOT = Path(__file__).resolve().parents[1]
  3. def test_semantic_governance_migration_is_additive_versioned_and_linked():
  4. migration = (
  5. ROOT / "migrations/versions/20260731_390_semantic_governance.py"
  6. ).read_text(encoding="utf-8")
  7. assert 'revision = "20260731_390"' in migration
  8. assert 'down_revision = "20260730_380"' in migration
  9. for table in (
  10. "semantic_assets",
  11. "semantic_asset_versions",
  12. "semantic_asset_reviews",
  13. "semantic_asset_links",
  14. "data_element_field_mappings",
  15. "semantic_publication_audits",
  16. ):
  17. assert f"CREATE TABLE public.{table}" in migration
  18. assert "UNIQUE (asset_kind, code)" in migration
  19. assert "UNIQUE (asset_uid, version)" in migration
  20. assert "REFERENCES public.active_metadata_assets(uid)" in migration
  21. assert "REFERENCES public.data_elements(uid)" in migration
  22. assert "rollback_from_version" in migration
  23. assert "DROP TABLE" not in migration.upper()
  24. assert "DELETE FROM public" not in migration
  25. def test_existing_standard_publication_emits_audited_knowledge_event():
  26. repository = (
  27. ROOT / "app/core/data_rules/repository.py"
  28. ).read_text(encoding="utf-8")
  29. assert "data_standard.version_published" in repository
  30. assert "semantic_publication_audits" in repository
  31. assert 'aggregate_type="data_standard"' in repository