from django.test import TestCase from django_components.util.html import SoupNode from .django_test_setup import setup_test_config setup_test_config({"autodiscover": False}) class HtmlTests(TestCase): def test_beautifulsoup_impl(self): nodes = SoupNode.from_fragment( """
""".strip() ) # Items:
, whitespace, comment, whitespace, """, ) self.assertEqual(nodes[0].name(), "div") self.assertEqual(nodes[4].name(), "button") self.assertEqual(nodes[0].is_element(), True) self.assertEqual(nodes[2].is_element(), False) self.assertEqual(nodes[4].is_element(), True) self.assertEqual(nodes[0].get_attr("class"), "abc xyz") self.assertEqual(nodes[4].get_attr("class"), None) nodes[0].set_attr("class", "123 456") nodes[4].set_attr("class", "abc def") self.assertEqual(nodes[0].get_attr("class"), "123 456") self.assertEqual(nodes[4].get_attr("class"), "abc def") self.assertHTMLEqual( nodes[0].to_html(), """
""", ) self.assertHTMLEqual( nodes[4].to_html(), """ """, ) # Setting attr to `True` will set it to boolean attribute, # while setting it to `False` will remove the attribute. nodes[4].set_attr("disabled", True) self.assertHTMLEqual( nodes[4].to_html(), """ """, ) nodes[4].set_attr("disabled", False) self.assertHTMLEqual( nodes[4].to_html(), """ """, ) # Return self self.assertEqual(nodes[0].node, nodes[0].find_tag("div").node) # type: ignore[union-attr] # Return descendant li = nodes[0].find_tag("li") self.assertHTMLEqual(li.to_html(), "
  • Hi
  • ") # type: ignore[union-attr] # Return None when not found self.assertEqual(nodes[0].find_tag("main"), None) # Insert children li.append_children([nodes[4]]) # type: ignore[union-attr] self.assertHTMLEqual( li.to_html(), # type: ignore[union-attr] """
  • Hi
  • """, )