from __future__ import annotations import importlib.util from pathlib import Path def _load_migration_module(): path = ( Path(__file__).resolve().parents[1] / "alembic" / "versions" / "20260327_cleanup_model_routing_legacy_names.py" ) spec = importlib.util.spec_from_file_location("model_routing_cleanup_migration", path) module = importlib.util.module_from_spec(spec) assert spec is not None assert spec.loader is not None spec.loader.exec_module(module) return module def test_rewrite_model_routing_config_renames_and_prunes_legacy_keys() -> None: migration = _load_migration_module() config = { "mappings": { "project_draft_analysis_glm47_fallback": { "tier_alias": "low", "updated_by": 1, }, "project_draft_charter_glm47_fallback": { "tier_alias": "low", }, "adaptive_rag_answer_deep_signal_batch_analysis": { "tier_alias": "high", "updated_by": 2, }, "ai_pmo_signal_title_refine": { "tier_alias": "high", "updated_by": 9, }, }, } rewritten = migration._rewrite_model_routing_config(config) mappings = rewritten["mappings"] assert mappings["ai_pmo_signal_title_refine"]["tier_alias"] == "high" assert mappings["ai_pmo_signal_title_refine"]["updated_by"] == 9 assert mappings["ai_pmo_signal_batch_analysis"]["tier_alias"] == "high" assert mappings["ai_pmo_signal_batch_analysis"]["updated_by"] == 2 assert "project_draft_analysis_glm47_fallback" not in mappings assert "project_draft_charter_glm47_fallback" not in mappings assert "adaptive_rag_answer_deep_signal_batch_analysis" not in mappings