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

1from couchers.markup import html_to_plaintext, markdown_to_html, markdown_to_plaintext 

2 

3 

4def test_markdown_to_html() -> None: 

5 def to_para(span: str) -> str: 

6 return f"<p>{span}</p>\n" 

7 

8 assert markdown_to_html("new\nline") == to_para("new<br>\nline") 

9 assert markdown_to_html("a & b") == to_para("a &amp; b") 

10 

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”") 

16 

17 assert markdown_to_html("<script/>") == to_para("&lt;script/&gt;") 

18 

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" 

22 

23 

24def test_markdown_to_plaintext() -> None: 

25 assert markdown_to_plaintext("new\nline") == "new\nline" 

26 assert markdown_to_plaintext("a & b") == "a & b" 

27 

28 assert markdown_to_plaintext("**bold**") == "bold" 

29 assert markdown_to_plaintext("_italic_") == "italic" 

30 assert markdown_to_plaintext("[link](url)") == "link" 

31 

32 # By design since plaintext should never be interpreted as markup. 

33 assert markdown_to_plaintext("<script/>") == "<script/>" 

34 

35 assert markdown_to_plaintext("# title") == "title" 

36 

37 

38def test_html_to_plaintext() -> None: 

39 assert html_to_plaintext("new<br>line") == "new\nline" 

40 assert html_to_plaintext("entity&excl;") == "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"