Skip to content

Commit 55f7710

Browse files
committed
Reorganize tests
1 parent a53ee01 commit 55f7710

File tree

2 files changed

+104
-94
lines changed

2 files changed

+104
-94
lines changed

tests/test_lexbor.py

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from inspect import cleandoc
44

5-
import pytest
65

76
from selectolax.lexbor import LexborHTMLParser, parse_fragment
87

@@ -218,96 +217,3 @@ def test_comment_content_property() -> None:
218217
assert text_node is not None
219218
assert text_node.is_comment_node
220219
assert text_node.comment_content == "hello"
221-
222-
223-
def test_fragment_parser_top_level_tags():
224-
parser = LexborHTMLParser(
225-
"<div><span>\n \n</span><title>X</title></div>", is_fragment=False
226-
)
227-
assert parser is not None and isinstance(parser, LexborHTMLParser)
228-
assert (
229-
parser.html
230-
== "<html><head></head><body><div><span>\n \n</span><title>X</title></div></body></html>"
231-
)
232-
assert (
233-
parser.root.html
234-
== "<html><head></head><body><div><span>\n \n</span><title>X</title></div></body></html>"
235-
)
236-
assert parser.head is not None
237-
assert parser.body is not None
238-
parser = LexborHTMLParser(
239-
"<div><span>\n \n</span><title>X</title></div>", is_fragment=True
240-
)
241-
assert parser.html == "<div><span>\n \n</span><title>X</title></div>"
242-
assert parser.root.html == "<div><span>\n \n</span><title>X</title></div>"
243-
assert parser.head is None
244-
assert parser.body is None
245-
parser = LexborHTMLParser(
246-
"<html><body><div><span>\n \n</span><title>X</title></div></body></html>",
247-
is_fragment=True,
248-
)
249-
assert parser.html == "<div><span>\n \n</span><title>X</title></div>"
250-
251-
252-
def test_fragment_parser_multiple_nodes_on_the_same_level():
253-
html = clean_doc("""
254-
<meta charset="utf-8">
255-
<meta content="width=device-width,initial-scale=1" name="viewport">
256-
<title>Title!</title>
257-
<!-- My crazy comment -->
258-
<p>Hello <strong>World</strong>!</p>
259-
""")
260-
parser = LexborHTMLParser(html, is_fragment=True)
261-
expected_html = clean_doc("""
262-
<meta charset="utf-8">
263-
<meta content="width=device-width,initial-scale=1" name="viewport">
264-
<title>Title!</title>
265-
<!-- My crazy comment -->
266-
<p>Hello <strong>World</strong>!</p>
267-
268-
""")
269-
assert parser.html == expected_html
270-
271-
272-
def test_fragment_parser_whole_doc():
273-
html = """<html lang="en">
274-
<head><meta charset="utf-8"><title>Title!</title></head>
275-
<body><p>Lorem <strong>Ipsum</strong>!</p></body>
276-
</html>"""
277-
parser = LexborHTMLParser(html, is_fragment=True)
278-
expected_html = '<meta charset="utf-8"><title>Title!</title>\n <p>Lorem <strong>Ipsum</strong>!</p>'
279-
html = parser.html
280-
assert html is not None
281-
assert html.strip() == expected_html
282-
283-
284-
def test_fragment_parser_empty_doc():
285-
html = ""
286-
parser = LexborHTMLParser(html, is_fragment=True)
287-
assert parser.html is None
288-
289-
290-
@pytest.mark.parametrize(
291-
"html, expected_html",
292-
[
293-
("<body><div>Test</div></body>", "<div>Test</div>"),
294-
(" <div>Lorep Ipsum</div>", " <div>Lorep Ipsum</div>"),
295-
("<div>Lorem</div><div>Ipsum</div>", "<div>Lorem</div><div>Ipsum</div>"),
296-
(" \n <div>Lorem Ipsum</div> \t ", " \n <div>Lorem Ipsum</div> \t "),
297-
("<!-- Comment --><div>Content</div>", "<!-- Comment --><div>Content</div>"),
298-
(
299-
"<template><p>Inside Template</p></template>",
300-
"<template><p>Inside Template</p></template>",
301-
),
302-
],
303-
)
304-
def test_fragment_parser(html, expected_html):
305-
parser = LexborHTMLParser(html, is_fragment=True)
306-
assert parser.html == expected_html
307-
308-
309-
def test_insert_node_fragment_parser():
310-
html = "<div></div>"
311-
p = LexborHTMLParser(html, is_fragment=True)
312-
p.root.insert_child("text")
313-
assert p.html == "<div>text</div>"

tests/test_lexbor_fragment.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
from inspect import cleandoc
2+
import pytest
3+
from selectolax.lexbor import LexborHTMLParser
4+
5+
# TODO:
6+
# 1) .clone on document, .clone on node
7+
# 2) Any kind of tree modification
8+
9+
10+
def clean_doc(text: str) -> str:
11+
return f"{cleandoc(text)}\n"
12+
13+
14+
def test_fragment_parser_top_level_tags():
15+
parser = LexborHTMLParser(
16+
"<div><span>\n \n</span><title>X</title></div>", is_fragment=False
17+
)
18+
assert parser is not None and isinstance(parser, LexborHTMLParser)
19+
assert (
20+
parser.html
21+
== "<html><head></head><body><div><span>\n \n</span><title>X</title></div></body></html>"
22+
)
23+
assert (
24+
parser.root.html
25+
== "<html><head></head><body><div><span>\n \n</span><title>X</title></div></body></html>"
26+
)
27+
assert parser.head is not None
28+
assert parser.body is not None
29+
parser = LexborHTMLParser(
30+
"<div><span>\n \n</span><title>X</title></div>", is_fragment=True
31+
)
32+
assert parser.html == "<div><span>\n \n</span><title>X</title></div>"
33+
assert parser.root.html == "<div><span>\n \n</span><title>X</title></div>"
34+
assert parser.head is None
35+
assert parser.body is None
36+
parser = LexborHTMLParser(
37+
"<html><body><div><span>\n \n</span><title>X</title></div></body></html>",
38+
is_fragment=True,
39+
)
40+
assert parser.html == "<div><span>\n \n</span><title>X</title></div>"
41+
42+
43+
def test_fragment_parser_multiple_nodes_on_the_same_level():
44+
html = clean_doc("""
45+
<meta charset="utf-8">
46+
<meta content="width=device-width,initial-scale=1" name="viewport">
47+
<title>Title!</title>
48+
<!-- My crazy comment -->
49+
<p>Hello <strong>World</strong>!</p>
50+
""")
51+
parser = LexborHTMLParser(html, is_fragment=True)
52+
expected_html = clean_doc("""
53+
<meta charset="utf-8">
54+
<meta content="width=device-width,initial-scale=1" name="viewport">
55+
<title>Title!</title>
56+
<!-- My crazy comment -->
57+
<p>Hello <strong>World</strong>!</p>
58+
59+
""")
60+
assert parser.html == expected_html
61+
62+
63+
def test_fragment_parser_whole_doc():
64+
html = """<html lang="en">
65+
<head><meta charset="utf-8"><title>Title!</title></head>
66+
<body><p>Lorem <strong>Ipsum</strong>!</p></body>
67+
</html>"""
68+
parser = LexborHTMLParser(html, is_fragment=True)
69+
expected_html = '<meta charset="utf-8"><title>Title!</title>\n <p>Lorem <strong>Ipsum</strong>!</p>'
70+
html = parser.html
71+
assert html is not None
72+
assert html.strip() == expected_html
73+
74+
75+
def test_fragment_parser_empty_doc():
76+
html = ""
77+
parser = LexborHTMLParser(html, is_fragment=True)
78+
assert parser.html is None
79+
80+
81+
@pytest.mark.parametrize(
82+
"html, expected_html",
83+
[
84+
("<body><div>Test</div></body>", "<div>Test</div>"),
85+
(" <div>Lorep Ipsum</div>", " <div>Lorep Ipsum</div>"),
86+
("<div>Lorem</div><div>Ipsum</div>", "<div>Lorem</div><div>Ipsum</div>"),
87+
(" \n <div>Lorem Ipsum</div> \t ", " \n <div>Lorem Ipsum</div> \t "),
88+
("<!-- Comment --><div>Content</div>", "<!-- Comment --><div>Content</div>"),
89+
(
90+
"<template><p>Inside Template</p></template>",
91+
"<template><p>Inside Template</p></template>",
92+
),
93+
],
94+
)
95+
def test_fragment_parser(html, expected_html):
96+
parser = LexborHTMLParser(html, is_fragment=True)
97+
assert parser.html == expected_html
98+
99+
100+
def test_insert_node_fragment_parser():
101+
html = "<div></div>"
102+
p = LexborHTMLParser(html, is_fragment=True)
103+
p.root.insert_child("text")
104+
assert p.html == "<div>text</div>"

0 commit comments

Comments
 (0)