init
This commit is contained in:
44
tests/test_skills.py
Normal file
44
tests/test_skills.py
Normal 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"
|
||||
Reference in New Issue
Block a user