Files

41 lines
1.5 KiB
Python

from __future__ import annotations
import tempfile
import unittest
from pathlib import Path
from techviz.insert import build_markdown_block, insert_or_replace
class InsertTests(unittest.TestCase):
def test_insert_is_idempotent(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
document = root / "doc.md"
svg = root / "diagram.svg"
source = root / "diagram.drawio"
spec = root / "spec.json"
document.write_text("# Doc\n\n<!-- techviz:generate id=diagram -->\n", encoding="utf-8")
for path in (svg, source, spec):
path.write_text("x", encoding="utf-8")
block = build_markdown_block(
diagram_id="diagram",
alt="A useful diagram",
long_description="The diagram explains a source-grounded path.",
svg_path=svg,
editable_path=source,
spec_path=spec,
document_path=document,
context_sha256="abc",
)
insert_or_replace(document, "diagram", block)
insert_or_replace(document, "diagram", block)
result = document.read_text(encoding="utf-8")
self.assertEqual(result.count("techviz:begin id=diagram"), 1)
self.assertEqual(result.count("techviz:end id=diagram"), 1)
self.assertEqual(result.count("techviz:generate id=diagram"), 1)
if __name__ == "__main__":
unittest.main()