Skip to content

Commit f29d60d

Browse files
committed
Even more tests
1 parent 1ae139b commit f29d60d

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

tests/test_lexbor_fragment.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,91 @@ def test_fragment_decompose():
279279
def test_fragment_strips_top_level_tags(input_html, expected):
280280
parser = LexborHTMLParser(input_html, is_fragment=True)
281281
assert parser.html == expected
282+
283+
284+
def test_fragment_navigation():
285+
html = "<div>First</div><span>Second</span><p>Third</p>"
286+
parser = LexborHTMLParser(html, is_fragment=True)
287+
div = parser.root
288+
span = div.next
289+
p = span.next
290+
assert div.tag == "div"
291+
assert span.tag == "span"
292+
assert p.tag == "p"
293+
assert div.prev is None
294+
assert span.prev.tag == "div"
295+
assert p.prev.tag == "span"
296+
assert p.next is None
297+
assert div.first_child.is_text_node
298+
assert div.last_child.is_text_node
299+
assert div.first_child.text_content == "First"
300+
301+
302+
def test_fragment_attrs():
303+
html = "<div id='test' class='foo bar' data-value='123'></div>"
304+
parser = LexborHTMLParser(html, is_fragment=True)
305+
div = parser.root
306+
assert div.attributes == {"id": "test", "class": "foo bar", "data-value": "123"}
307+
assert div.attrs["id"] == "test"
308+
div.attrs["new"] = "value"
309+
assert div.attributes == {
310+
"id": "test",
311+
"class": "foo bar",
312+
"data-value": "123",
313+
"new": "value",
314+
}
315+
316+
317+
def test_fragment_child_alias():
318+
html = "<div><span>content</span></div>"
319+
parser = LexborHTMLParser(html, is_fragment=True)
320+
div = parser.root
321+
assert div.child == div.first_child
322+
323+
324+
def test_fragment_tag_properties():
325+
html = "<div id='test'>content</div>"
326+
parser = LexborHTMLParser(html, is_fragment=True)
327+
div = parser.root
328+
assert div.tag == "div"
329+
assert div.tag_id is not None
330+
assert div.mem_id is not None
331+
assert div.id == "test"
332+
333+
334+
def test_fragment_unwrap():
335+
html = "<div><span>Hello</span> world</div>"
336+
parser = LexborHTMLParser(html, is_fragment=True)
337+
span = parser.root.css_first("span")
338+
span.unwrap()
339+
assert parser.html == "<div>Hello world</div>"
340+
341+
342+
def test_fragment_unwrap_tags():
343+
html = "<div><i>Hello</i> <b>world</b></div>"
344+
parser = LexborHTMLParser(html, is_fragment=True)
345+
parser.root.unwrap_tags(["i", "b"])
346+
assert parser.html == "<div>Hello world</div>"
347+
348+
349+
def test_fragment_eq():
350+
html = "<div>test</div>"
351+
parser1 = LexborHTMLParser(html, is_fragment=True)
352+
parser2 = LexborHTMLParser(html, is_fragment=True)
353+
assert parser1.root == parser2.root.html
354+
assert parser1.root == "<div>test</div>"
355+
356+
357+
def test_fragment_text_content():
358+
html = "<div>Hello</div>"
359+
parser = LexborHTMLParser(html, is_fragment=True)
360+
text_node = parser.root.first_child
361+
assert text_node.text_content == "Hello"
362+
assert parser.root.text_content is None
363+
364+
365+
def test_fragment_comment_content():
366+
html = "<!-- comment -->"
367+
parser = LexborHTMLParser(html, is_fragment=True)
368+
comment_node = parser.root
369+
assert comment_node.comment_content == "comment"

0 commit comments

Comments
 (0)