aboutsummaryrefslogtreecommitdiff
path: root/tests/html/collapse_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/html/collapse_tests.py')
-rw-r--r--tests/html/collapse_tests.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/html/collapse_tests.py b/tests/html/collapse_tests.py
new file mode 100644
index 0000000..52cecd2
--- /dev/null
+++ b/tests/html/collapse_tests.py
@@ -0,0 +1,107 @@
+from nose.tools import istest, assert_equal
+
+from mammoth import html
+
+
+@istest
+def collapsing_does_nothing_to_single_text_node():
+ assert_equal(
+ html.collapse([html.text("Bluebells")]),
+ [html.text("Bluebells")])
+
+
+@istest
+def consecutive_fresh_elements_are_not_collapsed():
+ assert_equal(
+ html.collapse([html.element("p"), html.element("p")]),
+ [html.element("p"), html.element("p")])
+
+
+@istest
+def consecutive_collapsible_elements_are_collapsed_if_they_have_the_same_tag_and_attributes():
+ assert_equal(
+ [html.collapsible_element("p", {}, [html.text("One"), html.text("Two")])],
+ html.collapse([
+ html.collapsible_element("p", {}, [html.text("One")]),
+ html.collapsible_element("p", {}, [html.text("Two")])
+ ]))
+
+
+@istest
+def elements_with_different_tag_names_are_not_collapsed():
+ assert_equal(
+ [
+ html.collapsible_element("p", {}, [html.text("One")]),
+ html.collapsible_element("div", {}, [html.text("Two")])
+ ],
+
+ html.collapse([
+ html.collapsible_element("p", {}, [html.text("One")]),
+ html.collapsible_element("div", {}, [html.text("Two")])
+ ]))
+
+
+@istest
+def elements_with_different_attributes_are_not_collapsed():
+ assert_equal(
+ [
+ html.collapsible_element("p", {"id": "a"}, [html.text("One")]),
+ html.collapsible_element("p", {}, [html.text("Two")])
+ ],
+
+ html.collapse([
+ html.collapsible_element("p", {"id": "a"}, [html.text("One")]),
+ html.collapsible_element("p", {}, [html.text("Two")])
+ ]))
+
+
+@istest
+def children_of_collapsed_element_can_collapse_with_children_of_previous_element():
+ assert_equal(
+ [
+ html.collapsible_element("blockquote", {}, [
+ html.collapsible_element("p", {}, [
+ html.text("One"),
+ html.text("Two")
+ ])
+ ]),
+ ],
+
+ html.collapse([
+ html.collapsible_element("blockquote", {}, [
+ html.collapsible_element("p", {}, [html.text("One")])
+ ]),
+ html.collapsible_element("blockquote", {}, [
+ html.collapsible_element("p", {}, [html.text("Two")])
+ ]),
+ ]))
+
+
+@istest
+def collapsible_element_can_collapse_into_previous_fresh_element():
+ assert_equal(
+ [html.element("p", {}, [html.text("One"), html.text("Two")])],
+ html.collapse([
+ html.element("p", {}, [html.text("One")]),
+ html.collapsible_element("p", {}, [html.text("Two")])
+ ]))
+
+
+@istest
+def element_with_choice_of_tag_names_can_collapse_into_previous_element_if_it_has_one_of_those_tag_names_as_its_main_tag_name():
+ assert_equal(
+ [html.collapsible_element(["ol"])],
+ html.collapse([
+ html.collapsible_element("ol"),
+ html.collapsible_element(["ul", "ol"])
+ ]))
+
+ assert_equal(
+ [
+ html.collapsible_element(["ul", "ol"]),
+ html.collapsible_element("ol")
+ ],
+ html.collapse([
+ html.collapsible_element(["ul", "ol"]),
+ html.collapsible_element("ol")
+ ]))