refactor: rewrite from Ruby/Sinatra to Python/FastAPI
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
"""Tests for Markdown renderer."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from volumen.markdown import render
|
||||
|
||||
|
||||
class TestBasicRendering:
|
||||
def test_renders_bold(self) -> None:
|
||||
assert "<strong>bold</strong>" in render("**bold**")
|
||||
|
||||
def test_renders_italic(self) -> None:
|
||||
result = render("*italic*")
|
||||
assert "<em>italic</em>" in result
|
||||
|
||||
def test_renders_heading(self) -> None:
|
||||
assert "<h1" in render("# Title")
|
||||
|
||||
def test_renders_paragraph(self) -> None:
|
||||
result = render("Simple paragraph.")
|
||||
assert "<p>" in result
|
||||
|
||||
def test_renders_link(self) -> None:
|
||||
result = render("[link](https://example.com)")
|
||||
assert '<a href="https://example.com"' in result
|
||||
|
||||
def test_renders_unordered_list(self) -> None:
|
||||
result = render("- one\n- two\n")
|
||||
assert "<ul>" in result
|
||||
assert "<li>one</li>" in result
|
||||
|
||||
|
||||
class TestGFMFeatures:
|
||||
def test_renders_gfm_table(self) -> None:
|
||||
table = "| A | B |\n|---|---|\n| 1 | 2 |\n"
|
||||
assert "<table" in render(table)
|
||||
|
||||
def test_renders_fenced_code_block(self) -> None:
|
||||
code = "```python\nprint(1)\n```\n"
|
||||
html = render(code)
|
||||
assert "<pre" in html or "<code" in html
|
||||
|
||||
def test_renders_task_list(self) -> None:
|
||||
md = "- [x] Done\n- [ ] Todo\n"
|
||||
result = render(md)
|
||||
assert "checkbox" in result.lower() or "checked" in result.lower()
|
||||
|
||||
def test_renders_strikethrough(self) -> None:
|
||||
result = render("~~strike~~")
|
||||
assert "<del>" in result
|
||||
|
||||
|
||||
class TestFigureWrapping:
|
||||
def test_image_with_title_wrapped_in_figure(self) -> None:
|
||||
result = render('')
|
||||
assert "<figure>" in result
|
||||
|
||||
def test_image_without_title_no_wrapping(self) -> None:
|
||||
result = render("")
|
||||
assert "<figure>" not in result
|
||||
|
||||
def test_figure_includes_figcaption(self) -> None:
|
||||
result = render('')
|
||||
assert "<figcaption>" in result
|
||||
assert "caption" in result
|
||||
|
||||
|
||||
class TestEdgeCases:
|
||||
def test_empty_input(self) -> None:
|
||||
result = render("")
|
||||
assert isinstance(result, str)
|
||||
assert result == ""
|
||||
|
||||
def test_plain_text(self) -> None:
|
||||
result = render("Hello world")
|
||||
assert "Hello world" in result
|
||||
|
||||
def test_html_passthrough(self) -> None:
|
||||
result = render("<span>inline</span>")
|
||||
assert "<span>" in result
|
||||
Reference in New Issue
Block a user