def test_dropdown_menus(web_fixture): """You can add a DropdownMenu as a dropdown inside a Nav.""" menu = Nav(web_fixture.view) sub_menu = DropdownMenu(web_fixture.view) sub_menu.add_a(A(web_fixture.view, Url('/an/url'), description='sub menu item')) menu.add_dropdown('Dropdown title', sub_menu) [item] = menu.html_representation.children assert item.tag_name == 'li' assert 'dropdown' in item.get_attribute('class') [toggle, added_sub_menu] = item.children assert 'dropdown-toggle' in toggle.get_attribute('class') assert 'button' in toggle.get_attribute('role') assert 'true' in toggle.get_attribute('aria-haspopup') assert 'dropdown' in toggle.get_attribute('data-toggle') title_text = toggle.children[0].value assert title_text == 'Dropdown title' assert added_sub_menu is sub_menu assert 'dropdown-menu' in added_sub_menu.html_representation.get_attribute('class').split() assert isinstance(added_sub_menu.html_representation, Div) [dropdown_item] = added_sub_menu.html_representation.children assert isinstance(dropdown_item, A) assert 'dropdown-item' in dropdown_item.get_attribute('class').split()
def dropdown_menus(fixture): """You can add a DropdownMenu as a dropdown inside a Nav.""" menu = Nav(fixture.view) sub_menu = DropdownMenu(fixture.view) sub_menu.add_a(A(fixture.view, Url('/an/url'), description='sub menu item')) menu.add_dropdown('Dropdown title', sub_menu) [item] = menu.html_representation.children vassert(item.tag_name == 'li') vassert('dropdown' in item.get_attribute('class')) [toggle, added_sub_menu] = item.children vassert('dropdown-toggle' in toggle.get_attribute('class')) vassert('dropdown' in toggle.get_attribute('data-toggle')) vassert('-' in toggle.get_attribute('data-target')) vassert('caret' in toggle.children[1].get_attribute('class')) title_text = toggle.children[0].value vassert(title_text == 'Dropdown title') vassert(added_sub_menu is sub_menu) vassert('dropdown-menu' in added_sub_menu.html_representation.get_attribute('class').split()) vassert(isinstance(added_sub_menu.html_representation, Div)) [dropdown_item] = added_sub_menu.html_representation.children vassert(isinstance(dropdown_item, A)) vassert('dropdown-item' in dropdown_item.get_attribute('class').split())
def dropdown_menus_can_drop_up(fixture): """Dropdown menus can drop upwards instead of downwards.""" menu = Nav(fixture.view) sub_menu = Nav(fixture.view) menu.add_dropdown('Dropdown title', sub_menu, drop_up=True) [item] = menu.html_representation.children vassert(item.tag_name == 'li') vassert('dropup' in item.get_attribute('class'))
def test_dropdown_menus_drop_positions(web_fixture, drop_position_fixture): """Dropdown menus can drop to many positions.""" menu = Nav(web_fixture.view) sub_menu = Nav(web_fixture.view) menu.add_dropdown('Dropdown title', sub_menu, drop_position=drop_position_fixture.direction) [item] = menu.html_representation.children assert item.tag_name == 'li' assert drop_position_fixture.expected_class in item.get_attribute('class')