async def test_replace_child(self): child1 = Tag('child1') child2 = Tag('child2') self.root.appendChild(child1) await self.wait() self.element = await self.get_element_handle(child1) self.assertEqual(await self.get_text(), 'child1') self.assertIsNone(await self.get_element_handle(child2)) self.root.replaceChild(child2, child1) await self.wait() self.assertIsNone(await self.get_element_handle(child1)) self.element = await self.get_element_handle(child2) self.assertEqual(await self.get_text(), 'child2')
def setUp(self): class Inner(Tag): tag = 'in' class Outer(NestedTag): tag = 'out' inner_tag_class = Inner self.inner_cls = Inner self.outer_cls = Outer self.tag = self.outer_cls() self.c1 = Tag(src='c1') self.c2 = Tag(src='c2') self.c3 = Tag(src='c3') self.c4 = Tag(src='c4')
def test_creation(self): c = Tag(src='c1') tag = self.outer_cls(c, src='out') self.assertEqual( tag.html_noid, '<out src="out"><in><tag src="c1"></tag></in></out>', )
def test_set_body(self) -> None: self.doc.body.prepend(Tag()) html = self.doc.build() _re = re.compile( '<tag wdom_id="\d+">\s*</tag>', re.S ) self.assertIsNotNone(_re.search(html))
def test_custom_tag_theme_default(self): from wdom.util import suppress_logging suppress_logging() from wdom.themes import default from wdom import themes self.doc.register_theme(default) elm = Tag(parent=self.doc.body) elm.innerHTML = '<div is="container"></div>' self.assertTrue(isinstance(elm.firstChild, default.Container)) self.assertTrue(isinstance(elm.firstChild, themes.Container))
async def test_addremove_child(self): child = Tag() self.root.appendChild(child) await self.wait() self.element = await self.get_element_handle(child) self.assertEqual(await self.get_text(), '') child.textContent = 'Child' await self.wait() self.assertEqual(await self.get_text(), 'Child') self.root.removeChild(child) await self.wait() self.assertIsNone(await self.get_element_handle(child))
def test_custom_tag_theme(self): from wdom.themes import bootstrap3 from wdom import themes self.doc.register_theme(bootstrap3) elm = Tag(parent=self.doc.body) elm.innerHTML = '<div is="container"></div>' self.assertTrue(isinstance(elm.firstChild, bootstrap3.Container)) self.assertTrue(isinstance(elm.firstChild, themes.Container)) self.assertIn('maxcdn.bootstrapcdn.com', self.doc.build()) elm.innerHTML = '<button is="default-button"></button>' self.assertTrue(isinstance(elm.firstChild, bootstrap3.DefaultButton)) self.assertTrue(isinstance(elm.firstChild, bootstrap3.Button)) self.assertFalse(isinstance(elm.firstChild, themes.DefaultButton)) self.assertTrue(isinstance(elm.firstChild, themes.Button))
def test_custom_tag_theme_tag(self): from wdom import themes self.doc.register_theme(themes) elm = Tag(parent=self.doc.body) elm.innerHTML = '<div is="container"></div>' self.assertTrue(isinstance(elm.firstChild, themes.Container))
def test_child_exception(self) -> None: with self.assertRaises(ValueError): self.tag.removeChild(Tag()) with self.assertRaises(ValueError): self.tag.replaceChild(Tag(), Tag())
def setUp(self): self.tag = Tag() self.html = '<a>link</a>'
def test_type_attr(self) -> None: a = Tag() a.setAttribute('type', 'checkbox') self.assertRegex(a.html, '<tag wdom_id="\d+" type="checkbox"></tag>')
def test_type_init(self) -> None: a = Tag(type='button') self.assertRegex(a.html, '<tag wdom_id="\d+" type="button"></tag>')
def setUp(self): self.tag = Tag() self.c1 = Tag() self.c2 = Tag()
def test_attr_init(self): tag = Tag(attrs={'src': 'a'}) self.assertRegex(tag.html, '<tag wdom_id="\d+" src="a"></tag>') tag.removeAttribute('src') self.assertRegex(tag.html, '<tag wdom_id="\d+"></tag>')
def setUp(self): customElements.clear() self.tag = Tag() self.c1 = Tag(c="1") self.c2 = Tag(c="2")