upload
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(ROOT / "renderer"))
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user