summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_document.py146
1 files changed, 145 insertions, 1 deletions
diff --git a/tests/test_document.py b/tests/test_document.py
index 35f706f..0ddce94 100644
--- a/tests/test_document.py
+++ b/tests/test_document.py
@@ -1,5 +1,11 @@
+import pytest
+
from wikimini import document
+###########################
+# Block level element tests
+###########################
+
class TestBlockLink:
@@ -47,4 +53,142 @@ class TestBlockQuote:
document.InlineLink("http://localhost", document.Plain("bar")),
]
assert (document.BlockQuote(document.Paragraph(nodes)).to_nodes()
- == nodes)
+ == nodes)
+
+
+class TestHeading:
+
+ def test_append(self):
+ heading = document.Heading(1, "foo")
+ heading.append(document.Plain("bar"))
+ assert heading.text == "foobar"
+ assert heading.level == 1
+
+ heading.append(
+ document.Style(document.Plain("bar"), True, True, False)
+ )
+ assert heading.text == "foobarbar"
+ assert heading.level == 1
+
+ def test_plain(self):
+ heading = document.Heading(1, "raboof")
+ assert heading.plain() == "raboof"
+
+ def test_to_nodes(self):
+ heading = document.Heading(1, "raboof")
+ assert heading.to_nodes() == [document.Plain("raboof")]
+
+
+class TestItemList:
+
+ def test_append(self):
+ item_list = document.ItemList([], False)
+ item_list.append(document.Plain("foo"))
+ item_list.append(document.Plain("bar"))
+ assert len(item_list.items) == 1
+
+ def test_cleanup(self):
+ item_list = document.ItemList([
+ document.Paragraph([document.Plain(" foo")]),
+ document.Paragraph([document.Plain(" ")]),
+ document.Paragraph([document.Plain(" bar")]),
+ ], False)
+ item_list.cleanup()
+ assert len(item_list.items) == 2
+ assert item_list.items[0].plain() == "foo"
+ assert item_list.items[1].plain() == "bar"
+
+ def test_new_item(self):
+ item_list = document.ItemList([], False)
+ item_list.append(document.Plain("foo"))
+ item_list.new_item()
+ item_list.append(document.Plain("bar"))
+ assert len(item_list.items) == 2
+
+ def test_plain(self):
+ item_list = document.ItemList([
+ document.Paragraph([document.Plain("foo")]),
+ document.Paragraph([document.Plain("bar")]),
+ ], False)
+ assert item_list.plain() == "foo\nbar"
+
+ def test_to_nodes(self):
+ item_list = document.ItemList([
+ document.Paragraph([document.Plain("foo")]),
+ document.Paragraph([document.Plain("bar")]),
+ ], False)
+ nodes = item_list.to_nodes()
+ assert nodes == [document.Plain("foo"), document.Plain("bar")]
+
+
+class TestParagraph:
+
+ def test_append(self):
+ par = document.Paragraph([])
+ par.append(document.Plain("foo"))
+ par.append(document.InlineLink(
+ "https://localhost", document.Plain("bar")
+ ))
+ assert len(par.nodes) == 2
+
+ def test_cleanup(self):
+ par = document.Paragraph([
+ document.Plain(" "),
+ document.Plain(" foo"),
+ document.InlineLink("https://localhost", document.Plain("bar ")),
+ ])
+ par.cleanup()
+ assert len(par.nodes) == 2
+ assert par.plain() == "foobar"
+
+ @pytest.mark.parametrize("nodes, result", [
+ ([], False),
+ ([document.Plain("foo")], False),
+ ([document.InlineLink("foo", document.Plain("bar"))], True),
+ ([
+ document.InlineLink("foo", document.Plain("bar")),
+ document.Plain("raboof")
+ ], False),
+ ])
+ def test_is_link_paragraph(self, nodes, result):
+ par = document.Paragraph(nodes)
+ assert par.is_link_paragraph() == result
+
+ @pytest.mark.parametrize("nodes, result", [
+ ([], ""),
+ ([document.Plain("foo")], "foo"),
+ ([document.Plain("foo"), document.Plain("bar")], "foobar"),
+ ([document.InlineLink("foo", document.Plain("bar"))], "bar"),
+ ])
+ def test_plain(self, nodes, result):
+ par = document.Paragraph(nodes)
+ assert par.plain() == result
+
+
+class TestVerbatim:
+
+ def test_append(self):
+ verb = document.Verbatim("")
+ verb.append(document.Plain("foo"))
+ verb.append(document.InlineLink("foo", document.Plain("bar")))
+ assert verb.text == "foobar"
+
+ def test_cleanup(self):
+ verb = document.Verbatim(" \nfoo\n bar\n ")
+ verb.cleanup()
+ assert verb.text == " \nfoo\n bar\n "
+
+#############################
+# Tests for extract_plaintext
+#############################
+
+
+class TestExtractPlaintext:
+
+ @pytest.mark.parametrize("node, plain", [
+ (document.Plain("foo"), "foo"),
+ (document.InlineLink("foo", document.Plain("bar")), "bar"),
+ (document.Style(document.Plain("foo"), True, False, False), "foo"),
+ ])
+ def test_with_node(self, node, plain):
+ assert document.extract_plaintext(node) == plain