feat(entry): §22.4c unreviewed/reviewed_at/reviewed_by frontmatter fields

This commit is contained in:
Ben Stull
2026-06-03 22:28:11 -07:00
parent dd72f913a3
commit 597f6bc92b
2 changed files with 61 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
"""§22.4c — the unreviewed/reviewed_at/reviewed_by entry frontmatter fields."""
from __future__ import annotations
from app import entry as entry_mod
def test_parse_defaults_unreviewed_false_when_absent():
text = "---\nslug: ohm\ntitle: OHM\nstate: active\n---\n\nBody.\n"
e = entry_mod.parse(text)
assert e.unreviewed is False
assert e.reviewed_at is None
assert e.reviewed_by is None
def test_parse_reads_review_fields():
text = (
"---\nslug: ohm\ntitle: OHM\nstate: active\n"
"unreviewed: true\nreviewed_at: '2026-06-03'\nreviewed_by: ben\n---\n\nBody.\n"
)
e = entry_mod.parse(text)
assert e.unreviewed is True
assert e.reviewed_at == "2026-06-03"
assert e.reviewed_by == "ben"
def test_serialize_emits_review_fields_only_when_meaningful():
e = entry_mod.Entry(slug="a", title="A", state="super-draft")
assert "unreviewed" not in entry_mod.serialize(e)
assert "reviewed_at" not in entry_mod.serialize(e)
e2 = entry_mod.Entry(slug="b", title="B", state="active", unreviewed=True)
assert "unreviewed: true" in entry_mod.serialize(e2)
def test_round_trip_preserves_review_fields():
e = entry_mod.Entry(
slug="b", title="B", state="active",
unreviewed=False, reviewed_at="2026-06-03", reviewed_by="ben",
)
back = entry_mod.parse(entry_mod.serialize(e))
assert back.reviewed_at == "2026-06-03"
assert back.reviewed_by == "ben"
assert back.unreviewed is False