48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
|
|
"""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
|