from importlib.util import module_from_spec, spec_from_file_location from pathlib import Path from uuid import UUID, uuid4 MIGRATION_PATH = Path(__file__).parents[1] / "alembic" / "versions" / "0022_opaque_ids.py" SPEC = spec_from_file_location("opaque_ids_migration", MIGRATION_PATH) assert SPEC and SPEC.loader MIGRATION = module_from_spec(SPEC) SPEC.loader.exec_module(MIGRATION) def test_existing_semantic_ids_are_replaced_with_stable_uuid_values(): existing_uuid = str(uuid4()) mapping = MIGRATION.build_id_mapping(["family-route", existing_uuid]) assert set(mapping) == {"family-route"} UUID(mapping["family-route"]) assert mapping["family-route"] != "family-route" def test_uuid_values_are_not_regenerated_during_migration(): existing_uuid = str(uuid4()) assert MIGRATION.is_opaque_id(existing_uuid) assert not MIGRATION.is_opaque_id("family-route") assert MIGRATION.build_id_mapping([existing_uuid]) == {} def test_foreign_key_specs_capture_constraints_for_recreation(): foreign_keys = [ ( "WanfaRoute", { "name": "WanfaRoute_categoryId_fkey", "constrained_columns": ["categoryId"], "referred_table": "WanfaCategory", "referred_columns": ["id"], "options": {"ondelete": "RESTRICT"}, }, ) ] specs = MIGRATION.collect_fk_specs( foreign_keys, {"WanfaCategory": {"family-route": "category-uuid"}}, ) assert specs == [ { "name": "WanfaRoute_categoryId_fkey", "source_table": "WanfaRoute", "source_columns": ["categoryId"], "target_table": "WanfaCategory", "target_columns": ["id"], "ondelete": "RESTRICT", "onupdate": None, } ]