53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
"""Journal body as Markdown. Run from backend/: python tests/test_journal_body.py"""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
from journal_body import media_ids, media_token, plain_text, to_markdown
|
|
|
|
MEDIA_A = "11111111-1111-4111-8111-111111111111"
|
|
MEDIA_B = "22222222-2222-4222-8222-222222222222"
|
|
|
|
|
|
def expect(ok: bool, message: str) -> None:
|
|
if not ok:
|
|
raise SystemExit(f"FAIL: {message}")
|
|
print(f"OK {message}")
|
|
|
|
|
|
def main() -> None:
|
|
raw = (
|
|
"Heute war der Markt voll.\n\n"
|
|
"- Kirschen\n"
|
|
"- Brot\n\n"
|
|
f"\n\n"
|
|
"Später der **Hafen**."
|
|
)
|
|
expect(media_ids(raw) == [MEDIA_A], "markdown media ids")
|
|
text = plain_text(raw)
|
|
expect(MEDIA_A not in text, "plain text drops asset id")
|
|
expect("kansho-media" not in text, "plain text drops media url")
|
|
expect("Stand am Eingang" in text and "Kirschen" in text and "Hafen" in text, "wording kept")
|
|
expect("**" not in text, "markup stripped")
|
|
|
|
legacy = f"Anfang\n\n[[media:{MEDIA_A}|Stand]]\n\nMitte\n\n[[media:{MEDIA_B}]]"
|
|
converted = to_markdown(legacy)
|
|
expect(media_token(MEDIA_A, "Stand") in converted, "legacy becomes markdown")
|
|
expect(media_ids(legacy) == [MEDIA_A, MEDIA_B], "legacy ids")
|
|
expect(MEDIA_A not in plain_text(legacy), "legacy ids stripped in plain text")
|
|
expect(plain_text("nur text") == "nur text", "plain body unchanged")
|
|
expect(media_token(MEDIA_A, "Kai") == f"", "token shape")
|
|
from journal_body import clean_title
|
|
|
|
expect(clean_title("# ein langer Tag") == "ein langer Tag", "markdown heading stripped from title")
|
|
expect(clean_title("## Morgen\nRest") == "Morgen", "first line only")
|
|
print("journal body ok")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|