def test_render_url_item04(self): "Perm is callable" self.login(is_superuser=False) url = '/creme/add_contact' item = URLItem('home', url=url, label='Create contact', perm=lambda user: user.is_superuser ) elt = html5lib.parse(item.render(self.build_context()), namespaceHTMLElements=False) span_node = elt.find('.//span') self.assertEqual('ui-creme-navigation-text-entry forbidden', span_node.get('class')) # --- item.perm = lambda user: True elt = html5lib.parse(item.render(self.build_context()), namespaceHTMLElements=False) self.assertIsNone(elt.find('.//span')) a_node = elt.find('.//a') self.assertEqual(url, a_node.get('href'))
def test_render_url_item02(self): "URLItem with icon and label" icon = 'creme' my_label = 'HOME' item = URLItem('home', url='/', label=my_label, icon=icon, icon_label='Home', perm='creme_core', ) elt = html5lib.parse(item.render(self.build_context()), namespaceHTMLElements=False) img_node = elt.find('.//a/img') self.assertEqual('header-menu-icon', img_node.get('class')) self.assertEqual(my_label, img_node.tail)
def test_render_url_item03(self): "Not allowed (string perm)" self.login(is_superuser=False, allowed_apps=['creme_core']) icon = 'creme' my_label = 'HOME' item = URLItem('home', url='/', label=my_label, icon=icon, icon_label='Home', perm='creme_core.add_fakecontact', ) elt = html5lib.parse(item.render(self.build_context()), namespaceHTMLElements=False) span_node = elt.find('.//span') self.assertEqual('ui-creme-navigation-text-entry forbidden', span_node.get('class')) children = list(span_node) self.assertEqual(1, len(children)) self.assertEqual('img', children[0].tag)
def test_render_url_item01(self): "URLItem with icon" url = '/' icon = 'creme' label = 'Home' item = URLItem('home', url=url, icon=icon, icon_label=label) elt = html5lib.parse(item.render(self.build_context()), namespaceHTMLElements=False) a_node = elt.find('.//a') self.assertEqual(url, a_node.get('href')) children = list(a_node) self.assertEqual(1, len(children)) img_node = children[0] self.assertEqual('img', img_node.tag) self.assertEqual('header-menu-icon', img_node.get('class')) self.assertEqual(label, img_node.get('alt')) self.assertEqual(label, img_node.get('title')) self.assertIn(icon, img_node.get('src', '')) self.assertFalse(img_node.tail)