Coverage for app/backend/src/tests/test_markup.py: 100%
30 statements
« prev ^ index » next coverage.py v7.14.3, created at 2026-06-28 16:00 +0000
« prev ^ index » next coverage.py v7.14.3, created at 2026-06-28 16:00 +0000
1from couchers.markup import html_to_plaintext, markdown_to_html, markdown_to_plaintext
4def test_markdown_to_html() -> None:
5 def to_para(span: str) -> str:
6 return f"<p>{span}</p>\n"
8 assert markdown_to_html("new\nline") == to_para("new<br>\nline")
9 assert markdown_to_html("a & b") == to_para("a & b")
11 assert markdown_to_html("**bold**") == to_para("<strong>bold</strong>")
12 assert markdown_to_html("*italic*") == to_para("<em>italic</em>")
13 assert markdown_to_html("_italic_") == to_para("<em>italic</em>")
14 assert markdown_to_html("[link](url)") == to_para('<a href="url">link</a>')
15 assert markdown_to_html('"quoted"') == to_para("“quoted”")
17 assert markdown_to_html("<script/>") == to_para("<script/>")
19 assert markdown_to_html("# title") == "<h1>title</h1>\n"
20 assert markdown_to_html("- a\n- b") == "<ul>\n<li>a</li>\n<li>b</li>\n</ul>\n"
21 assert markdown_to_html("---") == "<hr>\n"
24def test_markdown_to_plaintext() -> None:
25 assert markdown_to_plaintext("new\nline") == "new\nline"
26 assert markdown_to_plaintext("a & b") == "a & b"
28 assert markdown_to_plaintext("**bold**") == "bold"
29 assert markdown_to_plaintext("_italic_") == "italic"
30 assert markdown_to_plaintext("[link](url)") == "link"
32 # By design since plaintext should never be interpreted as markup.
33 assert markdown_to_plaintext("<script/>") == "<script/>"
35 assert markdown_to_plaintext("# title") == "title"
38def test_html_to_plaintext() -> None:
39 assert html_to_plaintext("new<br>line") == "new\nline"
40 assert html_to_plaintext("entity!") == "entity!"
41 assert html_to_plaintext("<b>stripped</b>") == "stripped"
42 assert html_to_plaintext("a<script/>b") == "ab"
43 assert html_to_plaintext('<a href="https://example.com">attributes</a>') == "attributes"
44 assert html_to_plaintext("</b>malformed<a>") == "malformed"