This commit is contained in:
2026-06-24 14:40:43 +00:00
parent 22b05a7a1b
commit 7058970f98
80 changed files with 6383 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "renderer"))
+34
View File
@@ -0,0 +1,34 @@
import json
from pathlib import Path
from app.renderer import render_documents
from app.theme_catalog import THEMES
ROOT = Path(__file__).resolve().parents[1]
def test_html_contains_customer_and_period():
payload = json.loads((ROOT / "examples" / "sample-report.json").read_text(encoding="utf-8"))
html, footer = render_documents(payload)
assert payload["customer"]["name"] in html
assert payload["report"]["period"]["label"] in html
assert "pageNumber" in footer
def test_classic_theme_renders():
payload = json.loads((ROOT / "examples" / "sample-report.json").read_text(encoding="utf-8"))
payload["design"]["theme"] = "classic"
html, _ = render_documents(payload)
assert "Monatsverlauf" in html
def test_all_registered_themes_render():
base = json.loads((ROOT / "examples" / "sample-report.json").read_text(encoding="utf-8"))
for theme_id, theme in THEMES.items():
payload = json.loads(json.dumps(base))
payload["design"]["theme"] = theme_id
payload["design"].pop("palette_mode", None)
html, footer = render_documents(payload)
assert payload["customer"]["name"] in html, theme_id
assert theme["name"] in html or payload["report"]["period"]["label"] in html, theme_id
assert "pageNumber" in footer, theme_id
+23
View File
@@ -0,0 +1,23 @@
import json
from pathlib import Path
from app.validation import validate_claude_output, validate_report
ROOT = Path(__file__).resolve().parents[1]
def test_sample_report_is_valid():
payload = json.loads((ROOT / "examples" / "sample-report.json").read_text(encoding="utf-8"))
assert validate_report(payload) == []
def test_sample_claude_output_is_valid():
payload = json.loads((ROOT / "examples" / "sample-claude-output.json").read_text(encoding="utf-8"))
assert validate_claude_output(payload) == []
def test_unknown_design_property_is_rejected():
payload = json.loads((ROOT / "examples" / "sample-report.json").read_text(encoding="utf-8"))
payload["design"]["surprise_layout"] = True
errors = validate_report(payload)
assert errors