Beispiel #1
0
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()
Beispiel #2
0
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())
Beispiel #3
0
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'))
Beispiel #4
0
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')