From b4d3b526e232804e06b84d93628244cecd035df5 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 1 May 2026 12:51:54 +0200 Subject: feat: TOML frontmatter parse/write with tomlkit --- tests/test_frontmatter.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/test_frontmatter.py (limited to 'tests/test_frontmatter.py') diff --git a/tests/test_frontmatter.py b/tests/test_frontmatter.py new file mode 100644 index 0000000..2257a8a --- /dev/null +++ b/tests/test_frontmatter.py @@ -0,0 +1,49 @@ +import pytest +from pathlib import Path +import tempfile +from core.frontmatter import parse_frontmatter, write_frontmatter + +SAMPLE_MD = """\ ++++ +title = "Test Article" +type = "Tech" +draft = false +tags = ["linux", "python"] ++++ + +# Body + +Some content here. +""" + +def test_parse_returns_frontmatter_dict(tmp_path): + f = tmp_path / "index.md" + f.write_text(SAMPLE_MD) + fm, body = parse_frontmatter(f) + assert fm["title"] == "Test Article" + assert fm["type"] == "Tech" + assert fm["draft"] is False + assert "linux" in fm["tags"] + +def test_parse_returns_body(tmp_path): + f = tmp_path / "index.md" + f.write_text(SAMPLE_MD) + fm, body = parse_frontmatter(f) + assert "# Body" in body + assert "Some content here." in body + +def test_write_preserves_format(tmp_path): + f = tmp_path / "index.md" + f.write_text(SAMPLE_MD) + fm, body = parse_frontmatter(f) + fm["title"] = "Updated Title" + write_frontmatter(f, fm, body) + fm2, _ = parse_frontmatter(f) + assert fm2["title"] == "Updated Title" + assert fm2["type"] == "Tech" + +def test_parse_raises_on_missing_delimiters(tmp_path): + f = tmp_path / "index.md" + f.write_text("# No frontmatter\n\nJust body.") + with pytest.raises(ValueError, match="frontmatter"): + parse_frontmatter(f) -- cgit v1.2.3