"""Tests Katalog-Kontext für Progressionsgraph-Matching.""" from planning_catalog_context import ( ProgressionPlanningCatalogContext, PlanningCatalogContextItem, catalog_context_has_items, merge_catalog_context_into_target, ) from planning_exercise_profiles import PlanningTargetProfile def test_catalog_context_has_items(): assert not catalog_context_has_items(None) assert not catalog_context_has_items(ProgressionPlanningCatalogContext()) assert catalog_context_has_items( ProgressionPlanningCatalogContext( focus_areas=[PlanningCatalogContextItem(id=3, is_primary=True)], ) ) def test_merge_catalog_context_into_target_sets_focus(): base = PlanningTargetProfile(sources=["query_only"]) merged = merge_catalog_context_into_target( base, ProgressionPlanningCatalogContext( focus_areas=[PlanningCatalogContextItem(id=7, is_primary=True)], training_types=[PlanningCatalogContextItem(id=2, is_primary=True)], ), ) assert merged.focus_area_ids.get(7, 0) > 0.5 assert merged.training_type_ids.get(2, 0) > 0.5 assert "catalog_context" in merged.sources def test_normalize_planning_roadmap_with_catalog_context(): from progression_graph_planning_artifact import normalize_planning_roadmap_payload out = normalize_planning_roadmap_payload( { "goal_query": "Deeskalation Kinder", "planning_catalog_context": { "focus_areas": [{"id": 4, "is_primary": True}], "target_groups": [{"id": 9, "is_primary": True}], }, } ) assert out["planning_catalog_context"]["focus_areas"][0]["id"] == 4