Skip to content

Commit ff7173b

Browse files
feat: travel_journal theme pack - HTML fixture + golden XML
- Add golden XML template at data/samples/xml/travel_journal.xml - Register travel_journal in CLI theme mapping - Add test_travel_journal_theme.py with fixture, golden, generation, and validation tests - HTML fixture already exists at data/samples/html/travel_journal.html Closes mergeos-bounties#28
1 parent e375e46 commit ff7173b

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

src/bloggereasy/cli.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def demo_cmd(
130130
"portfolio.html": "portfolio",
131131
"news_portal.html": "news",
132132
"dark_dev.html": "dark",
133+
"travel_journal.html": "travel",
133134
}
134135
for path in samples:
135136
out = root / f"{path.stem}.xml"

tests/test_travel_journal_theme.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
"""Golden XML + HTML fixture validation for travel_journal theme."""
2+
3+
from pathlib import Path
4+
5+
from bloggereasy.integrations.sdk import generate_from_html
6+
from bloggereasy.theme.validate import validate_theme_file
7+
8+
9+
def test_travel_journal_html_fixture_exists() -> None:
10+
fixture = Path("data/samples/html/travel_journal.html")
11+
assert fixture.exists(), "travel_journal.html fixture missing"
12+
html = fixture.read_text(encoding="utf-8")
13+
assert "Coastal Escape" in html or "travel" in html.lower()
14+
assert "<style>" in html
15+
16+
17+
def test_travel_journal_golden_xml_exists() -> None:
18+
golden = Path("data/samples/xml/travel_journal.xml")
19+
assert golden.exists(), "travel_journal.xml golden missing"
20+
xml = golden.read_text(encoding="utf-8")
21+
assert "b:skin" in xml
22+
assert "Travel Journal" in xml
23+
assert "BloggerEasy" in xml
24+
25+
26+
def test_travel_journal_generate_valid(tmp_path: Path) -> None:
27+
src = Path("data/samples/html/travel_journal.html")
28+
out = tmp_path / "travel_journal.xml"
29+
result = generate_from_html(src, out, template="travel")
30+
assert result["validation"]["ok"] is True
31+
xml = out.read_text(encoding="utf-8")
32+
assert "b:skin" in xml or "skin" in xml.lower()
33+
assert "Blog" in xml
34+
35+
36+
def test_travel_journal_golden_validates() -> None:
37+
golden = Path("data/samples/xml/travel_journal.xml")
38+
v = validate_theme_file(golden)
39+
assert v["ok"] is True, f"Golden XML validation failed: {v.get('issues')}"

0 commit comments

Comments
 (0)