def test_visual_feedback_on_items(web_fixture, visual_feedback_scenarios): """The state of a MenuItem is visually indicated to a user.""" menu = Nav(web_fixture.view) menu.add_a(A(web_fixture.view, Url('/an_url'))) menu.add_a(visual_feedback_scenarios.menu_item_with_state) [defaulted_item, item_with_state] = menu.html_representation.children [defaulted_a] = defaulted_item.children [a_with_state] = item_with_state.children assert visual_feedback_scenarios.state_indicator_class not in defaulted_a.get_attribute('class') assert visual_feedback_scenarios.state_indicator_class in a_with_state.get_attribute('class')
def test_rendering_active_menu_items(web_fixture, menu_item_scenarios): """A MenuItem is marked as active based on its active_regex or the A it represents.""" description = 'The link' href = Url('/link') menu = Nav(web_fixture.view) menu_item_a = A(web_fixture.view, href, description=description) menu.add_a(menu_item_a, active_regex=menu_item_scenarios.active_regex) tester = WidgetTester(menu) actual = tester.get_html_for('//li') active_str = '' if not menu_item_scenarios.active else 'active ' expected_menu_item_html = '<li class="nav-item"><a href="/link" class="%snav-link">The link</a></li>' % (active_str) assert actual == expected_menu_item_html
def new_menu(self): menu = Nav(self.web_fixture.view) menu.add_a(self.menu_item_a) return menu