mirror of
https://github.com/venthur/blag.git
synced 2025-11-25 12:42:41 +00:00
114 lines
3.1 KiB
Python
114 lines
3.1 KiB
Python
"""Test markdown module."""
|
|
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
import markdown
|
|
import pytest
|
|
|
|
from blag.markdown import convert_markdown, markdown_factory
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input_, expected",
|
|
[
|
|
# inline
|
|
("[test](test.md)", "test.html"),
|
|
('[test](test.md "test")', "test.html"),
|
|
("[test](a/test.md)", "a/test.html"),
|
|
('[test](a/test.md "test")', "a/test.html"),
|
|
("[test](/test.md)", "/test.html"),
|
|
('[test](/test.md "test")', "/test.html"),
|
|
("[test](/a/test.md)", "/a/test.html"),
|
|
('[test](/a/test.md "test")', "/a/test.html"),
|
|
# reference
|
|
("[test][]\n[test]: test.md " "", "test.html"),
|
|
('[test][]\n[test]: test.md "test"', "test.html"),
|
|
("[test][]\n[test]: a/test.md", "a/test.html"),
|
|
('[test][]\n[test]: a/test.md "test"', "a/test.html"),
|
|
("[test][]\n[test]: /test.md", "/test.html"),
|
|
('[test][]\n[test]: /test.md "test"', "/test.html"),
|
|
("[test][]\n[test]: /a/test.md", "/a/test.html"),
|
|
('[test][]\n[test]: /a/test.md "test"', "/a/test.html"),
|
|
],
|
|
)
|
|
def test_convert_markdown_links(input_: str, expected: str) -> None:
|
|
"""Test convert_markdown."""
|
|
md = markdown_factory()
|
|
html, _ = convert_markdown(md, input_)
|
|
assert expected in html
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input_, expected",
|
|
[
|
|
# scheme
|
|
("[test](https://)", "https://"),
|
|
# netloc
|
|
("[test](//test.md)", "//test.md"),
|
|
# no path
|
|
("[test]()", ""),
|
|
],
|
|
)
|
|
def test_dont_convert_normal_links(input_: str, expected: str) -> None:
|
|
"""Test convert_markdown doesn't convert normal links."""
|
|
md = markdown_factory()
|
|
html, _ = convert_markdown(md, input_)
|
|
assert expected in html
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input_, expected",
|
|
[
|
|
("foo: bar", {"foo": "bar"}),
|
|
("foo: those are several words", {"foo": "those are several words"}),
|
|
("tags: this, is, a, test\n", {"tags": ["this", "is", "a", "test"]}),
|
|
("tags: this, IS, a, test", {"tags": ["this", "is", "a", "test"]}),
|
|
(
|
|
"date: 2020-01-01 12:10",
|
|
{"date": datetime(2020, 1, 1, 12, 10).astimezone()},
|
|
),
|
|
],
|
|
)
|
|
def test_convert_metadata(input_: str, expected: dict[str, Any]) -> None:
|
|
"""Test convert_markdown converts metadata correctly."""
|
|
md = markdown_factory()
|
|
_, meta = convert_markdown(md, input_)
|
|
assert expected == meta
|
|
|
|
|
|
def test_markdown_factory() -> None:
|
|
"""Test markdown_factory."""
|
|
md = markdown_factory()
|
|
assert isinstance(md, markdown.Markdown)
|
|
|
|
|
|
def test_smarty() -> None:
|
|
"""Test smarty."""
|
|
md = markdown_factory()
|
|
|
|
md1 = """
|
|
|
|
this --- is -- a test ...
|
|
|
|
"""
|
|
html, meta = convert_markdown(md, md1)
|
|
assert "mdash" in html
|
|
assert "ndash" in html
|
|
assert "hellip" in html
|
|
|
|
|
|
def test_smarty_code() -> None:
|
|
"""Test smarty doesn't touch code."""
|
|
md = markdown_factory()
|
|
|
|
md1 = """
|
|
```
|
|
this --- is -- a test ...
|
|
```
|
|
"""
|
|
html, meta = convert_markdown(md, md1)
|
|
assert "mdash" not in html
|
|
assert "ndash" not in html
|
|
assert "hellip" not in html
|