from importlib.util import module_from_spec, spec_from_file_location from datetime import datetime from pathlib import Path MIGRATION_PATH = Path(__file__).parents[1] / "alembic" / "versions" / "0021_detail_records.py" SPEC = spec_from_file_location("detail_records_migration", MIGRATION_PATH) assert SPEC and SPEC.loader MIGRATION = module_from_spec(SPEC) SPEC.loader.exec_module(MIGRATION) def test_detail_record_indexes_are_created_only_when_missing(): assert MIGRATION.missing_detail_record_indexes(set()) == { "ix_DetailRecord_isActive", "ix_DetailRecord_sortOrder", } assert MIGRATION.missing_detail_record_indexes({"ix_DetailRecord_isActive"}) == { "ix_DetailRecord_sortOrder", } assert MIGRATION.missing_detail_record_indexes( {"ix_DetailRecord_isActive", "ix_DetailRecord_sortOrder"} ) == set() def test_detail_seed_rows_skip_existing_route_keys(): routes = [ { "id": "family-route", "title": "亲子路线", "subtitle": "贵州亲子慢游", "image": "https://example.test/family.jpg", "sortOrder": 0, } ] rows = MIGRATION.build_detail_seed_rows(routes, set(), datetime(2026, 1, 1)) assert rows[0]["key"] == "family-route" assert MIGRATION.build_detail_seed_rows(routes, {"family-route"}, datetime(2026, 1, 1)) == []