shinkan-jinkendo/backend/tests/test_planning_exercise_text_signals.py

48 lines
1.5 KiB
Python
Raw Permalink Normal View History

"""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