Ejemplo n.º 1
0
class NoteLayout(components.CardinalLayout):
    """ Define the global cardinal based layout with the links to the other tutorial steps.
    This is also used as root for the other steps, so all will have a consistent layout. """

    # avoid extra margin for the north slot
    plain = ['north']

    # this forces a none-fluid base container
    constrained = True

    # define the list of sub components used in this component
    node_list = [
        components.NavLayout(
            slot='north',
            title='Epfl Tutorial App',
            node_list=[
                components.Link(
                    text='First step',
                    url='/',
                    slot='right'),
                components.Link(
                    text='Second step',
                    url='/second',
                    slot='right'),
                components.Link(
                    text='Third step',
                    url='/third',
                    slot='right')]
        )]
Ejemplo n.º 2
0
def test_breadcrumb(page):
    page.root_node = ComponentContainerBase(node_list=[
        components.Link(cid='first_link', text='foobar', breadcrumb=True)
    ])
    page.handle_transaction()

    root = page.root_node
    compo = page.first_link

    assert compo.is_first(
    ), 'Link is first in container but is_first() is False.'
    assert_breadcrumb(compo)

    root.add_component(
        components.Link(cid='second_link', text='foobar', breadcrumb=True))
    assert compo.is_first(
    ), 'Link is first in container but is_first() is False.'
    assert_breadcrumb(compo)

    root.add_component(components.Link(cid='third_link',
                                       slot='foobar',
                                       text='foobar',
                                       breadcrumb=True),
                       position=0)

    assert compo.is_first(
    ), 'Link is first in container but is_first() is False.'
    assert_breadcrumb(compo)

    root.add_component(components.Link(text='foobar', breadcrumb=True),
                       position=0)
    assert not compo.is_first(
    ), 'Link is not first in container but is_first() is True.'
    assert_breadcrumb(compo)
Ejemplo n.º 3
0
def test_new_window(page):
    page.root_node = components.Link(text='foobar', new_window=True, tile=True)
    page.handle_transaction()

    compo = page.root_node

    assert 'target="_blank"' in compo.render(
    ), 'new_window set to True but target="_blank" is missing or malformed in html.'
Ejemplo n.º 4
0
def test_tile(page):
    page.root_node = components.Link(text='foobar', tile=True)
    page.handle_transaction()

    compo = page.root_node

    assert 'class="tile-link"' in compo.render(
    ), 'tile set to True but class is missing or malformed in html.'
Ejemplo n.º 5
0
def test_icon(page):
    page.root_node = components.Link(text='foobar', icon='home')
    page.handle_transaction()

    compo = page.root_node

    assert '<i class="fa fa-{icon}"></i>'.format(icon='home') in compo.render(), \
        'icon set to "home" but i tag is missing or malformed in html.'
Ejemplo n.º 6
0
def test_url_generation_with_dynamic_url(page):
    url = 'some_url/{with_a_twist}'
    page.root_node = components.Link(text='foobar', url=url)
    page.handle_transaction()

    assert_href_is('url', {'url': url}, page.root_node, None)
    twisted_url = assert_with_a_twist('url', page, url)
    assert_href_is('url', {'url': twisted_url}, page.root_node, twisted_url)
Ejemplo n.º 7
0
def test_btn_disabled(page):
    page.root_node = components.Link(text='foobar',
                                     btn_link=True,
                                     btn_disabled=True)
    page.handle_transaction()

    compo = page.root_node

    assert 'btn btn-default disabled' in compo.render(
    ), 'btn_disabled set but disabled is missing or malformed in html.'
Ejemplo n.º 8
0
def test_btn_link_color(page):
    page.root_node = components.Link(text='foobar',
                                     btn_link=True,
                                     btn_link_color="primary")
    page.handle_transaction()

    compo = page.root_node

    assert 'btn btn-primary' in compo.render(
    ), 'btn_link_color set but btn_link_color is missing or malformed in html.'
Ejemplo n.º 9
0
def test_url_generation_with_dynamic_route(page, config):
    route = 'test_link_route_parametrized'
    config.add_route(route, pattern='/test_link_route/{param}')

    page.root_node = components.Link(text='foobar', route=route)
    page.handle_transaction()

    assert_href_is('route', {'route': route}, page.root_node, None)
    page.request.matchdict['param'] = '1234'
    assert_href_is('route', {'route': route}, page.root_node,
                   '/test_link_route/1234')
Ejemplo n.º 10
0
def test_list_element(page, route):
    page.root_node = components.Link(url='/foobar',
                                     text='foobar',
                                     list_element=True)
    page.handle_transaction()

    compo = page.root_node

    route.path = None
    assert not compo.is_current_url(
    ), 'route.path is not equal to _url but is_current_url returns True.'
    assert_list_element(compo)

    route.path = compo._url
    assert compo.is_current_url(
    ), 'route.path is equal to _url but is_current_url returns False.'
    assert_list_element(compo)
Ejemplo n.º 11
0
def test_selection(page):
    page.root_node = components.Link(
        url='/foobar',
        text='foobar',
    )
    page.handle_transaction()

    compo = page.root_node

    for selection, result in [
        ((0, 10), '<mark>foobar</mark>'),
        ((0, 3), '<mark>foo</mark>bar'),
        ((2, 4), 'fo<mark>ob</mark>ar'),
        ((2, 10), 'fo<mark>obar</mark>'),
    ]:
        compo.selection = selection
        assert result in compo.render(), \
            'selection set around foobar, but mark tag is missing or malformed in html.'
        compo.render_cache = None
Ejemplo n.º 12
0
def test_name_generation(page):
    test_name = '[[{{test_name}}]]'
    test_text = '[[{{test_text}}]]'

    page.root_node = components.Link(url='/foobar')
    page.handle_transaction()
    compo = page.root_node

    compo.text = test_text
    assert test_text in compo.render(
    ), 'text set to "{text}" but is missing in the rendered html.'.format(
        text=test_text)
    compo.render_cache = None

    compo.text = test_text
    compo.name = test_name
    assert test_name in compo.render(
    ), 'name set to "{name}" but is missing in the rendered html.'.format(
        text=test_text,
        name=test_name,
    )
    assert test_text not in compo.render(
    ), 'name set to "{name}" but text "{text}" is in the rendered html.'.format(
        text=test_text,
        name=test_name,
    )
    compo.render_cache = None

    compo.text = None
    compo.name = test_name
    assert test_name in compo.render(
    ), 'name set to "{name}" but is missing in the rendered html.'.format(
        text=test_text,
        name=test_name,
    )
    assert 'None' not in compo.render(
    ), 'name set to "{name}" but "None" is in the rendered html.'.format(
        text=test_text,
        name=test_name,
    )
    compo.render_cache = None
Ejemplo n.º 13
0
def test_context_menu(page, bool_toggle):
    page.root_node = components.Link(text='foobar')

    page.handle_transaction()
    compo = page.root_node

    if bool_toggle:
        compo.context_menu = [{
            'name': u"Delete",
            'event': "delete",
            'type': "link"
        }, {
            'name': "Rename",
            'event': "rename",
            'type': "link"
        }]
    else:
        compo.context_menu = None

    if bool_toggle:
        assert 'epfl-context-menu-btn' in compo.render(
        ), "Could not find context menu button"
        assert 'context-dropdown-menu' in compo.render(
        ), "Could not find context menu"
        assert 'data-event="delete"' in compo.render(
        ), "Could not find context menu entry delete"
        assert 'data-event="rename"' in compo.render(
        ), "Could not find context menu entry rename"
    else:
        assert 'epfl-context-menu-btn' not in compo.render(
        ), "Find context menu button where no was expected"
        assert 'context-dropdown-menu' not in compo.render(
        ), "Find context menu where no was expected"
        assert 'data-event="delete"' not in compo.render(
        ), "Find context menu entry delete where no was expected"
        assert 'data-event="rename"' not in compo.render(
        ), "Fnd context menu entry rename where no was expected"
Ejemplo n.º 14
0
def test_url_generation(link_param_url, page, config):
    config.add_route('/test_link_route', pattern='/test_link_route')
    event_name, route, url, text, name = link_param_url

    page.root_node = components.Link(
        url=url,
        route=route,
        name=name,
        text=text,
        event_name=event_name,
    )
    page.handle_transaction()

    params = dict(
        _url=page.root_node._url,
        url=url,
        route=route,
        name=name,
        text=text,
        event_name=event_name,
    )

    compo = page.root_node

    if event_name:
        assert compo._url is None, 'event_name is set to {event_name} but _url is {_url}.'.format(
            **params)
        assert_href_is('event_name', params, compo, None)
    elif route:
        assert compo._url == route, 'route is set to {route} but _url is {_url}.'.format(
            **params)
        assert_href_is('route', params, compo, route)
    elif url:
        assert compo._url == url, 'url is set to {url} but _url is {_url}.'.format(
            **params)
        assert_href_is('url', params, compo, url)