def test_collapsible_rendered(self): from cocktail.html.element import Element parent = Element() # An element starts with no rendered children self.assertFalse(parent.has_rendered_children()) # A collapsible element with no children is not rendered parent.collapsible = True self.assertFalse(parent.rendered) # A collapsible element with visible children is rendered child1 = Element() parent.append(child1) self.assertTrue(parent.has_rendered_children()) self.assertTrue(parent.rendered) # A collapsible element with invisible children is not rendered child1.visible = False self.assertFalse(parent.has_rendered_children()) self.assertFalse(parent.rendered) # A collapsible element with collapsible children without rendered # children is not rendered child1.visible = True child1.collapsible = True self.assertFalse(parent.has_rendered_children()) self.assertFalse(parent.rendered) # The collapsible property applies recursively grandchild1 = Element() child1.append(grandchild1) self.assertTrue(parent.has_rendered_children()) self.assertTrue(parent.rendered) self.assertTrue(child1.has_rendered_children()) self.assertTrue(child1.rendered) grandchild1.visible = False self.assertFalse(parent.has_rendered_children()) self.assertFalse(parent.rendered) self.assertFalse(child1.has_rendered_children()) self.assertFalse(child1.rendered) # Just one rendered child suffices to get a collapsible element to be # rendered child2 = Element() parent.append(child2) self.assertTrue(parent.has_rendered_children()) self.assertTrue(parent.rendered)
def test_invisible_element_not_rendered(self): from cocktail.html.element import Element e = Element() e.visible = False self.assertEqual(self.get_html(e), "") e.visible = True e.collapsible = True self.assertEqual(self.get_html(e), "") child = Element() child.visible = False e.append(child) self.assertEqual(self.get_html(e), "")