Skip to content

Commit 057f2b6

Browse files
committed
tests
1 parent 65640fc commit 057f2b6

File tree

3 files changed

+107
-123
lines changed

3 files changed

+107
-123
lines changed

pyproject.toml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ line-length = 79
66
ignore = [
77
"ISC001",
88
"PLR2004",
9+
"S101",
910
"TRY003",
1011
# Some patterns contain special characters.
1112
"PLR0911",

tests/test_html.py

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
from quotequail._html import (
2+
Position,
3+
get_html_tree,
4+
render_html_tree,
5+
tree_line_generator,
6+
trim_tree_after,
7+
trim_tree_before,
8+
)
9+
10+
11+
def test_tree_line_generator():
12+
tree = get_html_tree("<div>foo <span>bar</span><br>baz</div>")
13+
data = list(tree_line_generator(tree))
14+
div = tree.xpath("div")[0]
15+
br = tree.xpath("div/br")[0]
16+
assert data == [
17+
((div, Position.Begin), (br, Position.Begin), 0, "foo bar"),
18+
((br, Position.End), (div, Position.End), 0, "baz"),
19+
]
20+
data = list(tree_line_generator(tree, max_lines=1))
21+
div = tree.xpath("div")[0]
22+
br = tree.xpath("div/br")[0]
23+
assert data == [
24+
((div, Position.Begin), (br, Position.Begin), 0, "foo bar"),
25+
]
26+
27+
tree = get_html_tree("<div><h1>foo</h1>bar</div>")
28+
data = list(tree_line_generator(tree))
29+
div = tree.xpath("div")[0]
30+
h1 = tree.xpath("div/h1")[0]
31+
assert data == [
32+
((h1, Position.Begin), (h1, Position.End), 0, "foo"),
33+
((h1, Position.End), (div, Position.End), 0, "bar"),
34+
]
35+
36+
tree = get_html_tree("<div><blockquote>hi</blockquote>world</div>")
37+
data = list(tree_line_generator(tree))
38+
div = tree.xpath("div")[0]
39+
blockquote = tree.xpath("div/blockquote")[0]
40+
assert data == [
41+
((blockquote, Position.Begin), (blockquote, Position.End), 1, "hi"),
42+
((blockquote, Position.End), (div, Position.End), 0, "world"),
43+
]
44+
45+
tree = get_html_tree(
46+
"""
47+
<table>
48+
<tr><td>Subject: </td><td>the subject</td></tr>
49+
<tr><td>From: </td><td>from line</td></tr>
50+
</table>"""
51+
)
52+
data = list(tree_line_generator(tree))
53+
tr1, tr2 = tree.xpath("table/tr")
54+
assert data == [
55+
(
56+
(tr1, Position.Begin),
57+
(tr1, Position.End),
58+
0,
59+
"Subject: the subject",
60+
),
61+
((tr2, Position.Begin), (tr2, Position.End), 0, "From: from line"),
62+
]
63+
64+
65+
def test_trim_after():
66+
html = "<div>A<span>B</span>C<span>D</span>E</div>"
67+
68+
tree = get_html_tree(html)
69+
trim_tree_after(tree.find("div/span"))
70+
assert render_html_tree(tree) == "<div>A<span>B</span></div>"
71+
72+
tree = get_html_tree(html)
73+
trim_tree_after(tree.find("div/span[2]"))
74+
assert (
75+
render_html_tree(tree) == "<div>A<span>B</span>C<span>D</span></div>"
76+
)
77+
78+
tree = get_html_tree(html)
79+
trim_tree_after(tree.find("div/span"), include_element=False)
80+
assert render_html_tree(tree) == "<div>A</div>"
81+
82+
tree = get_html_tree(html)
83+
trim_tree_after(tree.find("div/span[2]"), include_element=False)
84+
assert render_html_tree(tree) == "<div>A<span>B</span>C</div>"
85+
86+
87+
def test_trim_before():
88+
html = "<div>A<span>B</span>C<span>D</span>E</div>"
89+
90+
tree = get_html_tree(html)
91+
trim_tree_before(tree.find("div/span"))
92+
assert (
93+
render_html_tree(tree) == "<div><span>B</span>C<span>D</span>E</div>"
94+
)
95+
96+
tree = get_html_tree(html)
97+
trim_tree_before(tree.find("div/span[2]"))
98+
assert render_html_tree(tree) == "<div><span>D</span>E</div>"
99+
100+
tree = get_html_tree(html)
101+
trim_tree_before(tree.find("div/span"), include_element=False)
102+
assert render_html_tree(tree) == "<div>C<span>D</span>E</div>"
103+
104+
tree = get_html_tree(html)
105+
trim_tree_before(tree.find("div/span[2]"), include_element=False)
106+
assert render_html_tree(tree) == "<div>E</div>"

tests/test_quotequail.py

-123
Original file line numberDiff line numberDiff line change
@@ -1172,129 +1172,6 @@ def test_extract_headers(self):
11721172
),
11731173
)
11741174

1175-
def test_tree_line_generator(self):
1176-
from quotequail import _html
1177-
1178-
tree = _html.get_html_tree("<div>foo <span>bar</span><br>baz</div>")
1179-
data = list(_html.tree_line_generator(tree))
1180-
div = tree.xpath("div")[0]
1181-
br = tree.xpath("div/br")[0]
1182-
self.assertEqual(
1183-
data,
1184-
[
1185-
((div, "begin"), (br, "begin"), 0, "foo bar"),
1186-
((br, "end"), (div, "end"), 0, "baz"),
1187-
],
1188-
)
1189-
data = list(_html.tree_line_generator(tree, max_lines=1))
1190-
div = tree.xpath("div")[0]
1191-
br = tree.xpath("div/br")[0]
1192-
self.assertEqual(
1193-
data,
1194-
[
1195-
((div, "begin"), (br, "begin"), 0, "foo bar"),
1196-
],
1197-
)
1198-
1199-
tree = _html.get_html_tree("<div><h1>foo</h1>bar</div>")
1200-
data = list(_html.tree_line_generator(tree))
1201-
div = tree.xpath("div")[0]
1202-
h1 = tree.xpath("div/h1")[0]
1203-
self.assertEqual(
1204-
data,
1205-
[
1206-
((h1, "begin"), (h1, "end"), 0, "foo"),
1207-
((h1, "end"), (div, "end"), 0, "bar"),
1208-
],
1209-
)
1210-
1211-
tree = _html.get_html_tree(
1212-
"<div><blockquote>hi</blockquote>world</div>"
1213-
)
1214-
data = list(_html.tree_line_generator(tree))
1215-
div = tree.xpath("div")[0]
1216-
blockquote = tree.xpath("div/blockquote")[0]
1217-
self.assertEqual(
1218-
data,
1219-
[
1220-
((blockquote, "begin"), (blockquote, "end"), 1, "hi"),
1221-
((blockquote, "end"), (div, "end"), 0, "world"),
1222-
],
1223-
)
1224-
1225-
tree = _html.get_html_tree(
1226-
"""
1227-
<table>
1228-
<tr><td>Subject: </td><td>the subject</td></tr>
1229-
<tr><td>From: </td><td>from line</td></tr>
1230-
</table>"""
1231-
)
1232-
data = list(_html.tree_line_generator(tree))
1233-
tr1, tr2 = tree.xpath("table/tr")
1234-
self.assertEqual(
1235-
data,
1236-
[
1237-
((tr1, "begin"), (tr1, "end"), 0, "Subject: the subject"),
1238-
((tr2, "begin"), (tr2, "end"), 0, "From: from line"),
1239-
],
1240-
)
1241-
1242-
def test_trim_after(self):
1243-
from quotequail import _html
1244-
1245-
html = "<div>A<span>B</span>C<span>D</span>E</div>"
1246-
1247-
tree = _html.get_html_tree(html)
1248-
_html.trim_tree_after(tree.find("div/span"))
1249-
self.assertEqual(
1250-
_html.render_html_tree(tree), "<div>A<span>B</span></div>"
1251-
)
1252-
1253-
tree = _html.get_html_tree(html)
1254-
_html.trim_tree_after(tree.find("div/span[2]"))
1255-
self.assertEqual(
1256-
_html.render_html_tree(tree),
1257-
"<div>A<span>B</span>C<span>D</span></div>",
1258-
)
1259-
1260-
tree = _html.get_html_tree(html)
1261-
_html.trim_tree_after(tree.find("div/span"), include_element=False)
1262-
self.assertEqual(_html.render_html_tree(tree), "<div>A</div>")
1263-
1264-
tree = _html.get_html_tree(html)
1265-
_html.trim_tree_after(tree.find("div/span[2]"), include_element=False)
1266-
self.assertEqual(
1267-
_html.render_html_tree(tree), "<div>A<span>B</span>C</div>"
1268-
)
1269-
1270-
def test_trim_before(self):
1271-
from quotequail import _html
1272-
1273-
html = "<div>A<span>B</span>C<span>D</span>E</div>"
1274-
1275-
tree = _html.get_html_tree(html)
1276-
_html.trim_tree_before(tree.find("div/span"))
1277-
self.assertEqual(
1278-
_html.render_html_tree(tree),
1279-
"<div><span>B</span>C<span>D</span>E</div>",
1280-
)
1281-
1282-
tree = _html.get_html_tree(html)
1283-
_html.trim_tree_before(tree.find("div/span[2]"))
1284-
self.assertEqual(
1285-
_html.render_html_tree(tree), "<div><span>D</span>E</div>"
1286-
)
1287-
1288-
tree = _html.get_html_tree(html)
1289-
_html.trim_tree_before(tree.find("div/span"), include_element=False)
1290-
self.assertEqual(
1291-
_html.render_html_tree(tree), "<div>C<span>D</span>E</div>"
1292-
)
1293-
1294-
tree = _html.get_html_tree(html)
1295-
_html.trim_tree_before(tree.find("div/span[2]"), include_element=False)
1296-
self.assertEqual(_html.render_html_tree(tree), "<div>E</div>")
1297-
12981175

12991176
if __name__ == "__main__":
13001177
unittest.main()

0 commit comments

Comments
 (0)