This commit is contained in:
team3
2026-07-23 16:07:36 +02:00
commit cb68cd671b
88 changed files with 10029 additions and 0 deletions

44
tests/test_skills.py Normal file
View File

@@ -0,0 +1,44 @@
"""Skill-Komposition: 1+1+n erzwungen, Platzhalter validiert, Hash stabil."""
import pytest
from backend import skills
def test_komposition_reihenfolge():
prompt, h, paare = skills.komponieren(
["extraktor", "deutsch-praezise", "atom-extraktion"],
{"thema": "X", "abschnitte": "Y"})
assert prompt.startswith("<!-- aufgabe:atom-extraktion -->")
assert prompt.index("## Rolle") < prompt.index("## Arbeitsweise") \
< prompt.index("## Aufgabe")
assert "{{" not in prompt
assert len(h) == 12 and len(paare) == 3
def test_zwei_rollen_verboten():
with pytest.raises(skills.SkillFehler, match="genau 1 Rolle"):
skills.komponieren(["extraktor", "richter", "atom-extraktion"],
{"thema": "X", "abschnitte": "Y"})
def test_fehlender_platzhalter():
with pytest.raises(skills.SkillFehler, match="Platzhalter fehlen"):
skills.komponieren(["extraktor", "atom-extraktion"], {"thema": "X"})
def test_hash_stabil_und_aendert_sich():
_, h1, _ = skills.komponieren(["extraktor", "atom-extraktion"],
{"thema": "A", "abschnitte": "B"})
_, h2, _ = skills.komponieren(["extraktor", "atom-extraktion"],
{"thema": "ANDERS", "abschnitte": "B"})
assert h1 == h2 # Hash hängt an den Skill-DATEIEN, nicht am Input
_, h3, _ = skills.komponieren(["extraktor", "deutsch-praezise",
"atom-extraktion"],
{"thema": "A", "abschnitte": "B"})
assert h3 != h1 # andere Skill-Menge → anderer Hash
def test_aufgaben_name():
prompt, _, _ = skills.komponieren(["richter", "klaerung"],
{"befund": "x", "belege": "y"})
assert skills.aufgaben_name(prompt) == "klaerung"