from pathlib import Path ROOT = Path(__file__).resolve().parents[1] def test_semantic_governance_migration_is_additive_versioned_and_linked(): migration = ( ROOT / "migrations/versions/20260731_390_semantic_governance.py" ).read_text(encoding="utf-8") assert 'revision = "20260731_390"' in migration assert 'down_revision = "20260730_380"' in migration for table in ( "semantic_assets", "semantic_asset_versions", "semantic_asset_reviews", "semantic_asset_links", "data_element_field_mappings", "semantic_publication_audits", ): assert f"CREATE TABLE public.{table}" in migration assert "UNIQUE (asset_kind, code)" in migration assert "UNIQUE (asset_uid, version)" in migration assert "REFERENCES public.active_metadata_assets(uid)" in migration assert "REFERENCES public.data_elements(uid)" in migration assert "rollback_from_version" in migration assert "DROP TABLE" not in migration.upper() assert "DELETE FROM public" not in migration def test_existing_standard_publication_emits_audited_knowledge_event(): repository = ( ROOT / "app/core/data_rules/repository.py" ).read_text(encoding="utf-8") assert "data_standard.version_published" in repository assert "semantic_publication_audits" in repository assert 'aggregate_type="data_standard"' in repository