Files
creator3/tests/test_skills.py
2026-07-23 16:07:36 +02:00

45 lines
1.8 KiB
Python

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