48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
|
|
"""Tests Phase B: Text-Signale für PlanningTargetProfile."""
|
||
|
|
from planning_exercise_text_signals import resolve_planning_text_to_catalog_weights
|
||
|
|
|
||
|
|
|
||
|
|
def test_resolve_planning_text_matches_skill_and_partner_hint():
|
||
|
|
class _Cur:
|
||
|
|
def execute(self, sql, params=None):
|
||
|
|
self._sql = sql
|
||
|
|
|
||
|
|
def fetchall(self):
|
||
|
|
sql = getattr(self, "_sql", "")
|
||
|
|
if "FROM skills" in sql:
|
||
|
|
return [
|
||
|
|
{"id": 5, "name": "Kime"},
|
||
|
|
{"id": 8, "name": "Schnellkraft"},
|
||
|
|
{"id": 2, "name": "Ab"},
|
||
|
|
]
|
||
|
|
if "FROM focus_areas" in sql:
|
||
|
|
return [{"id": 10, "name": "Karate Technik"}]
|
||
|
|
if "FROM style_directions" in sql:
|
||
|
|
return []
|
||
|
|
if "FROM training_types" in sql:
|
||
|
|
return []
|
||
|
|
if "FROM target_groups" in sql:
|
||
|
|
return [{"id": 3, "name": "Partnerübung"}]
|
||
|
|
return []
|
||
|
|
|
||
|
|
focus, style, tt, tg, skills = resolve_planning_text_to_catalog_weights(
|
||
|
|
_Cur(),
|
||
|
|
"Abschnitt: Kime vertiefen mit Partnerübung",
|
||
|
|
)
|
||
|
|
assert skills.get(5, 0) > 0
|
||
|
|
assert 8 not in skills
|
||
|
|
assert tg.get(3, 0) > 0
|
||
|
|
assert not style and not tt
|
||
|
|
|
||
|
|
|
||
|
|
def test_resolve_planning_text_empty():
|
||
|
|
class _Cur:
|
||
|
|
def execute(self, sql, params=None):
|
||
|
|
pass
|
||
|
|
|
||
|
|
def fetchall(self):
|
||
|
|
return []
|
||
|
|
|
||
|
|
focus, style, tt, tg, skills = resolve_planning_text_to_catalog_weights(_Cur(), " ")
|
||
|
|
assert not focus and not skills
|