"""Tests for sibilla.markdown — server-side Markdown → HTML conversion.""" from sibilla.markdown import render, strip_markdown class TestBasicMarkdown: def test_empty_returns_empty(self): assert render("") == "" assert render(None) == "" def test_plain_text(self): result = render("Ciao mondo") assert "Ciao mondo" in result assert result.startswith("

") def test_bold(self): result = render("Test **bold** text") assert "bold" in result def test_italic(self): result = render("Test *italic* text") assert "italic" in result def test_bold_italic(self): result = render("Test ***bold italic*** text") assert "" in result assert "" in result def test_inline_code(self): result = render("Use `print()` function") assert "print()" in result def test_headers(self): result = render("# H1\n## H2\n### H3") assert "

H1

" in result assert "

H2

" in result assert "

H3

" in result class TestLinks: def test_basic_link(self): result = render("[Google](https://google.com)") assert 'Google' in result def test_link_with_title(self): result = render('[Home](https://example.com "Example Home")') assert 'href="https://example.com"' in result assert 'title="Example Home"' in result def test_link_target_blank_is_preserved(self): """The markdown library doesn't add target, but if already in HTML...""" # This tests that our sanitizer doesn't strip legitimate attrs result = render("[link](https://a.com)") assert "href" in result class TestLists: def test_unordered_list(self): result = render("- Item 1\n- Item 2\n- Item 3") assert "