79 lines
2.0 KiB
Python
79 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
||
"""Tests for md_translate.py — run with `python test_md_translate.py`."""
|
||
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
sys.path.insert(0, str(Path(__file__).parent))
|
||
|
||
import md_translate
|
||
|
||
|
||
def test_passthrough_basics():
|
||
src = "# Heading\n\n- item\n\n```python\nx=1\n```"
|
||
assert md_translate.translate(src) == src
|
||
|
||
|
||
def test_callout_note():
|
||
out = md_translate.translate("> [!NOTE]\n> Be careful")
|
||
assert '<callout icon="ℹ️" color="blue_bg">' in out
|
||
assert "\tBe careful" in out
|
||
assert "</callout>" in out
|
||
|
||
|
||
def test_callout_warning_color():
|
||
out = md_translate.translate("> [!WARNING]\n> Danger")
|
||
assert 'color="yellow_bg"' in out
|
||
assert 'icon="⚠️"' in out
|
||
|
||
|
||
def test_columns():
|
||
src = "::: columns\n::: column\nLeft\n:::\n::: column\nRight\n:::\n:::"
|
||
out = md_translate.translate(src)
|
||
assert "<columns>" in out
|
||
assert out.count("<column>") == 2
|
||
assert "</columns>" in out
|
||
assert "\tLeft" in out or "\t\tLeft" in out
|
||
|
||
|
||
def test_toggle_children_indented():
|
||
src = "<details>\n<summary>More</summary>\nBody line\n</details>"
|
||
out = md_translate.translate(src)
|
||
assert "<summary>More</summary>" in out
|
||
assert "\tBody line" in out
|
||
|
||
|
||
def test_mention_url():
|
||
out = md_translate.translate(
|
||
"See @[ADR](https://notion.so/X-abcdef0123456789abcdef0123456789).")
|
||
assert "<mention-page url=" in out
|
||
assert ">ADR</mention-page>" in out
|
||
|
||
|
||
def test_mention_invalid_plain():
|
||
out = md_translate.translate("ping @[Bob](not-an-id)")
|
||
assert "@Bob" in out
|
||
assert "mention-page" not in out
|
||
|
||
|
||
def run_all():
|
||
tests = [
|
||
test_passthrough_basics,
|
||
test_callout_note,
|
||
test_callout_warning_color,
|
||
test_columns,
|
||
test_toggle_children_indented,
|
||
test_mention_url,
|
||
test_mention_invalid_plain,
|
||
]
|
||
for t in tests:
|
||
print(f"\n{t.__name__}")
|
||
t()
|
||
print("\n" + "=" * 50)
|
||
print(f"✅ All {len(tests)} tests passed")
|
||
print("=" * 50)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
run_all()
|