Files
2026Technology-Competition/tests/test_phase5_template_mapper.py
T

33 lines
1.4 KiB
Python

from genesis.data_models import ChapterMarker, ParsedTemplate
from genesis.writer.models import ChapterSpec
from genesis.writer.template_mapper import map_template
def _parsed():
sections = [
ChapterMarker(type="heading", name="はじめに", level=1),
ChapterMarker(type="placeholder", name="section:introduction", level=0),
ChapterMarker(type="heading", name="DB 設計", level=1),
ChapterMarker(type="placeholder", name="section:db_design", level=0),
ChapterMarker(type="bookmark", name="bm1", level=0),
]
return ParsedTemplate(file_name="t.docx", sections=sections, placeholders={"section:introduction": "x"}, styles={})
def test_map_template_ordered_and_assigns_ids():
specs = map_template(_parsed())
assert [s.title for s in specs] == ["はじめに", "DB 設計"]
assert specs[0].chapter_id == "introduction"
assert specs[0].section_placeholder == "section:introduction"
assert specs[1].chapter_id == "db_design"
assert specs[1].section_placeholder == "section:db_design"
assert all(isinstance(s, ChapterSpec) for s in specs)
def test_map_template_falls_back_without_placeholder():
sections = [ChapterMarker(type="heading", name="附録", level=1)]
parsed = ParsedTemplate(file_name="t.docx", sections=sections, placeholders={}, styles={})
specs = map_template(parsed)
assert specs[0].chapter_id == "chapter_1"
assert specs[0].section_placeholder is None