예제 #1
0
def test_page_list_filter(client, two_challenge_sets):
    """Check that only pages related to this challenge are listed."""
    p1 = PageFactory(
        challenge=two_challenge_sets.challenge_set_1.challenge,
        title="challenge1page1",
    )
    p2 = PageFactory(
        challenge=two_challenge_sets.challenge_set_2.challenge,
        title="challenge2page1",
    )
    response = get_view_for_user(
        viewname="pages:list",
        client=client,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
    )
    assert p1.title in response.rendered_content
    assert p2.title not in response.rendered_content
    response = get_view_for_user(
        viewname="pages:list",
        client=client,
        challenge=two_challenge_sets.challenge_set_2.challenge,
        user=two_challenge_sets.admin12,
    )
    assert p1.title not in response.rendered_content
    assert p2.title in response.rendered_content
예제 #2
0
def test_page_delete(client, two_challenge_sets):
    # Two pages with the same title, make sure the right one is deleted
    c1p1 = PageFactory(
        challenge=two_challenge_sets.challenge_set_1.challenge,
        display_title="page1",
    )
    c2p1 = PageFactory(
        challenge=two_challenge_sets.challenge_set_2.challenge,
        display_title="page1",
    )
    assert Page.objects.filter(pk=c1p1.pk).exists()
    assert Page.objects.filter(pk=c2p1.pk).exists()
    response = get_view_for_user(
        viewname="pages:delete",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"slug": "page1"},
    )
    assert response.status_code == 302
    assert not Page.objects.filter(pk=c1p1.pk).exists()
    assert Page.objects.filter(pk=c2p1.pk).exists()
    response = get_view_for_user(
        url=response.url, client=client, user=two_challenge_sets.admin12
    )
    assert response.status_code == 200
예제 #3
0
    def test_two_sites(self):
        site = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010002'))

        site_b = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010003'))

        SystemStringFactory.create(
            identifier='headline',
            string='headline a',
            site=site,
        )

        SystemStringFactory.create(
            identifier='headline',
            string='headline b',
            site=site_b,
        )

        fill_cache(site)
        fill_cache(site_b)

        preload(site)
        preload(site_b)

        set_site(site)
        self.assertEquals(gettext('headline'), 'headline a')

        set_site(site_b)
        self.assertEquals(gettext('headline'), 'headline b')
def test_page_move(page_to_move, move_op, expected, client, TwoChallengeSets):
    pages = []
    c2_pages = []
    for i in range(4):
        pages.append(
            PageFactory(challenge=TwoChallengeSets.ChallengeSet1.challenge))
        # Same page name in challenge 2, make sure that these are unaffected
        c2_pages.append(
            PageFactory(
                challenge=TwoChallengeSets.ChallengeSet2.challenge,
                title=pages[i].title,
            ))
    assert_page_order(pages, [1, 2, 3, 4])
    assert_page_order(c2_pages, [1, 2, 3, 4])
    response = get_view_for_user(
        viewname='pages:update',
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': pages[page_to_move].title},
        data={
            'title': pages[page_to_move].title,
            'permission_lvl': pages[page_to_move].permission_lvl,
            'html': pages[page_to_move].html,
            'move': move_op,
        },
    )
    assert response.status_code == 302
    assert_page_order(pages, expected)
    assert_page_order(c2_pages, [1, 2, 3, 4])
def test_page_list_filter(client, TwoChallengeSets):
    """ Check that only pages related to this challenge are listed """
    p1 = PageFactory(
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        title='challenge1page1',
    )
    p2 = PageFactory(
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        title='challenge2page1',
    )
    response = get_view_for_user(
        viewname='pages:list',
        client=client,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
    )
    assert p1.title in response.rendered_content
    assert p2.title not in response.rendered_content
    response = get_view_for_user(
        viewname='pages:list',
        client=client,
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        user=TwoChallengeSets.admin12,
    )
    assert p1.title not in response.rendered_content
    assert p2.title in response.rendered_content
예제 #6
0
def test_page_update(client, two_challenge_sets):
    p1 = PageFactory(
        challenge=two_challenge_sets.challenge_set_1.challenge,
        display_title="page1updatetest",
        html="oldhtml",
    )
    # page with the same name in another challenge to check selection
    PageFactory(
        challenge=two_challenge_sets.challenge_set_2.challenge,
        display_title="page1updatetest",
        html="oldhtml",
    )
    response = get_view_for_user(
        viewname="pages:update",
        client=client,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"slug": p1.slug},
    )
    assert response.status_code == 200
    assert 'value="page1updatetest"' in response.rendered_content
    response = get_view_for_user(
        viewname="pages:update",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"slug": p1.slug},
        data={
            "display_title": "editedtitle",
            "permission_level": Page.ALL,
            "html": "newhtml",
        },
    )
    assert response.status_code == 302

    # The slug shouldn't change
    response = get_view_for_user(
        viewname="pages:detail",
        client=client,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"slug": "page1updatetest"},
    )
    assert response.status_code == 200
    assert "newhtml" in str(response.content)

    # check that the other page is unaffected
    response = get_view_for_user(
        viewname="pages:detail",
        client=client,
        challenge=two_challenge_sets.challenge_set_2.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"slug": "page1updatetest"},
    )
    assert response.status_code == 200
    assert "oldhtml" in str(response.content)
def test_page_update(client, TwoChallengeSets):
    p1 = PageFactory(
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        title='page1updatetest',
        html='oldhtml',
    )
    # page with the same name in another challenge to check selection
    PageFactory(
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        title='page1updatetest',
        html='oldhtml',
    )
    response = get_view_for_user(
        viewname='pages:update',
        client=client,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': p1.title},
    )
    assert response.status_code == 200
    assert 'value=\"page1updatetest\"' in response.rendered_content
    response = get_view_for_user(
        viewname='pages:update',
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': p1.title},
        data={
            'title': 'editedtitle',
            'permission_lvl': Page.ALL,
            'html': 'newhtml',
        },
    )
    assert response.status_code == 302
    response = get_view_for_user(
        viewname='pages:detail',
        client=client,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': 'editedtitle'},
    )
    assert response.status_code == 200
    assert 'newhtml' in str(response.content)
    # check that the other page is unaffected
    response = get_view_for_user(
        viewname='pages:detail',
        client=client,
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': 'page1updatetest'},
    )
    assert response.status_code == 200
    assert 'oldhtml' in str(response.content)
예제 #8
0
def test_page_update(client, TwoChallengeSets):
    p1 = PageFactory(
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        title="page1updatetest",
        html="oldhtml",
    )
    # page with the same name in another challenge to check selection
    PageFactory(
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        title="page1updatetest",
        html="oldhtml",
    )
    response = get_view_for_user(
        viewname="pages:update",
        client=client,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={"page_title": p1.title},
    )
    assert response.status_code == 200
    assert 'value="page1updatetest"' in response.rendered_content
    response = get_view_for_user(
        viewname="pages:update",
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={"page_title": p1.title},
        data={
            "title": "editedtitle",
            "permission_lvl": Page.ALL,
            "html": "newhtml",
        },
    )
    assert response.status_code == 302
    response = get_view_for_user(
        viewname="pages:detail",
        client=client,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={"page_title": "editedtitle"},
    )
    assert response.status_code == 200
    assert "newhtml" in str(response.content)
    # check that the other page is unaffected
    response = get_view_for_user(
        viewname="pages:detail",
        client=client,
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={"page_title": "page1updatetest"},
    )
    assert response.status_code == 200
    assert "oldhtml" in str(response.content)
def test_create_page_with_same_title(client, TwoChallengeSets):
    PageFactory(challenge=TwoChallengeSets.ChallengeSet1.challenge,
                title='page1')
    # Creating a page with the same title should be denied
    response = get_view_for_user(
        viewname='pages:create',
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.ChallengeSet1.admin,
        data={
            'title': 'page1',
            'html': 'hello',
            'permission_lvl': Page.ALL
        },
    )
    assert response.status_code == 200
    assert 'A page with that title already exists' in response.rendered_content
    # Creating one in another challenge should work
    response = get_view_for_user(
        viewname='pages:create',
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet2.challenge,
        user=TwoChallengeSets.ChallengeSet2.admin,
        data={
            'title': 'page1',
            'html': 'hello',
            'permission_lvl': Page.ALL
        },
    )
    assert response.status_code == 302
    # Check the updating
    PageFactory(challenge=TwoChallengeSets.ChallengeSet1.challenge,
                title='page2')
    response = get_view_for_user(
        viewname='pages:update',
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': 'page2'},
        data={
            'title': 'page1',
            'html': ' ',
            'permission_lvl': Page.ALL,
            'move': BLANK_CHOICE_DASH[0],
        },
    )
    assert response.status_code == 200
    assert 'A page with that title already exists' in response.rendered_content
예제 #10
0
def test_create_page_with_same_title(client, two_challenge_sets):
    PageFactory(challenge=two_challenge_sets.challenge_set_1.challenge,
                title="page1")
    # Creating a page with the same title should be denied
    response = get_view_for_user(
        viewname="pages:create",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.challenge_set_1.admin,
        data={
            "title": "page1",
            "html": "hello",
            "permission_level": Page.ALL
        },
    )
    assert response.status_code == 200
    assert "A page with that title already exists" in response.rendered_content
    # Creating one in another challenge should work
    response = get_view_for_user(
        viewname="pages:create",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_2.challenge,
        user=two_challenge_sets.challenge_set_2.admin,
        data={
            "title": "page1",
            "html": "hello",
            "permission_level": Page.ALL
        },
    )
    assert response.status_code == 302
    # Check the updating
    PageFactory(challenge=two_challenge_sets.challenge_set_1.challenge,
                title="page2")
    response = get_view_for_user(
        viewname="pages:update",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"page_title": "page2"},
        data={
            "title": "page1",
            "html": " ",
            "permission_level": Page.ALL,
            "move": BLANK_CHOICE_DASH[0],
        },
    )
    assert response.status_code == 200
    assert "A page with that title already exists" in response.rendered_content
예제 #11
0
def create_page(comicsite, title, content="testcontent", permission_lvl=None):
    if permission_lvl is None:
        permission_lvl = Page.ALL
    return PageFactory(
        title=title,
        challenge=comicsite,
        html=content,
        permission_lvl=permission_lvl,
    )
예제 #12
0
def test_allusers_statistics():
    c = ChallengeFactory(short_name=str(uuid.uuid4()))
    p = PageFactory(challenge=c)
    template = Template(
        '{% load allusers_statistics from grandchallenge_tags %}'
        '{% allusers_statistics %}')
    context = Context()
    context.page = p
    rendered = template.render(context)
    assert "['Country', '#Participants']" in rendered
def test_allusers_statistics():
    c = ChallengeFactory(short_name=str(uuid.uuid4()))
    p = PageFactory(challenge=c)
    template = Template(
        "{% load allusers_statistics from grandchallenge_tags %}"
        "{% allusers_statistics %}")
    context = Context({"currentpage": p})
    rendered = template.render(context)
    assert '["Country", "#Participants"]' in rendered
    assert "data-geochart" in rendered
예제 #14
0
def test_page_move(
    page_to_move, move_op, expected, client, two_challenge_sets
):
    pages = [*two_challenge_sets.challenge_set_1.challenge.page_set.all()]
    c2_pages = [*two_challenge_sets.challenge_set_2.challenge.page_set.all()]

    for i in range(3):
        pages.append(
            PageFactory(challenge=two_challenge_sets.challenge_set_1.challenge)
        )
        # Same page name in challenge 2, make sure that these are unaffected
        c2_pages.append(
            PageFactory(
                challenge=two_challenge_sets.challenge_set_2.challenge,
                display_title=pages[i + 1].display_title,
            )
        )

    assert [p.order for p in pages] == [1, 2, 3, 4]
    assert [p.order for p in c2_pages] == [1, 2, 3, 4]

    response = get_view_for_user(
        viewname="pages:update",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.admin12,
        reverse_kwargs={"slug": pages[page_to_move].slug},
        data={
            "display_title": pages[page_to_move].display_title,
            "permission_level": pages[page_to_move].permission_level,
            "html": pages[page_to_move].html,
            "move": move_op,
        },
    )

    for p in chain(pages, c2_pages):
        p.refresh_from_db()

    assert response.status_code == 302
    assert [p.order for p in pages] == expected
    assert [p.order for p in c2_pages] == [1, 2, 3, 4]
예제 #15
0
def test_page_update_permissions(client, two_challenge_sets):
    p1 = PageFactory(
        challenge=two_challenge_sets.challenge_set_1.challenge,
        title="challenge1page1permissiontest",
    )
    validate_admin_only_view(
        viewname="pages:update",
        two_challenge_set=two_challenge_sets,
        client=client,
        reverse_kwargs={"page_title": p1.title},
    )
def test_page_update_permissions(client, TwoChallengeSets):
    p1 = PageFactory(
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        title='challenge1page1permissiontest',
    )
    validate_admin_only_view(
        viewname='pages:update',
        two_challenge_set=TwoChallengeSets,
        client=client,
        reverse_kwargs={'page_title': p1.title},
    )
예제 #17
0
def create_page(challenge,
                title,
                content="testcontent",
                permission_level=None):
    if permission_level is None:
        permission_level = Page.ALL
    return PageFactory(
        display_title=title,
        challenge=challenge,
        html=content,
        permission_level=permission_level,
    )
예제 #18
0
def test_project_statistics():
    c = ChallengeFactory(short_name=str(uuid.uuid4()))
    p = PageFactory(challenge=c)
    template = Template(
        "{% load project_statistics from grandchallenge_tags %}"
        "{% project_statistics %}"
    )
    context = Context()
    context.page = p
    rendered = template.render(context)
    assert "Number of users: 0" in rendered
    assert "['Country', '#Participants']" in rendered
예제 #19
0
    def setUp(self):
        site = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010002')
        )

        SystemStringFactory.create(
            identifier='title',
            string='Headline!',
            site=site,
            modified=True,
        )

        self.site = site
def test_page_delete(client, TwoChallengeSets):
    # Two pages with the same title, make sure the right one is deleted
    c1p1 = PageFactory(challenge=TwoChallengeSets.ChallengeSet1.challenge,
                       title='page1')
    c2p1 = PageFactory(challenge=TwoChallengeSets.ChallengeSet2.challenge,
                       title='page1')
    assert Page.objects.filter(pk=c1p1.pk).exists()
    assert Page.objects.filter(pk=c2p1.pk).exists()
    response = get_view_for_user(
        viewname='pages:delete',
        client=client,
        method=client.post,
        challenge=TwoChallengeSets.ChallengeSet1.challenge,
        user=TwoChallengeSets.admin12,
        reverse_kwargs={'page_title': 'page1'},
    )
    assert response.status_code == 302
    assert not Page.objects.filter(pk=c1p1.pk).exists()
    assert Page.objects.filter(pk=c2p1.pk).exists()
    response = get_view_for_user(url=response.url,
                                 client=client,
                                 user=TwoChallengeSets.admin12)
    assert response.status_code == 200
예제 #21
0
def test_create_page_with_same_title(client, two_challenge_sets):
    PageFactory(
        challenge=two_challenge_sets.challenge_set_1.challenge,
        display_title="page1",
    )

    # Creating a page with the same title should be created with a different slug
    response = get_view_for_user(
        viewname="pages:create",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_1.challenge,
        user=two_challenge_sets.challenge_set_1.admin,
        data={
            "display_title": "page1",
            "html": "hello",
            "permission_level": Page.ALL,
        },
    )
    assert response.status_code == 302

    challenge_pages = Page.objects.filter(
        challenge=two_challenge_sets.challenge_set_1.challenge,
        display_title="page1",
    )
    assert len(challenge_pages) == 2
    assert challenge_pages[0].slug == "page1"
    assert challenge_pages[1].slug == "page1-2"

    # Creating one in another challenge should work
    response = get_view_for_user(
        viewname="pages:create",
        client=client,
        method=client.post,
        challenge=two_challenge_sets.challenge_set_2.challenge,
        user=two_challenge_sets.challenge_set_2.admin,
        data={
            "display_title": "page1",
            "html": "hello",
            "permission_level": Page.ALL,
        },
    )
    assert response.status_code == 302
    assert (
        Page.objects.get(
            challenge=two_challenge_sets.challenge_set_2.challenge,
            display_title="page1",
        ).slug
        == "page1"
    )
예제 #22
0
    def test_replace(self):
        site = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010002'))

        SystemStringFactory.create(
            identifier='headline',
            string='Headline!',
            site=site,
        )

        set_site(site)
        fill_cache(site)
        preload(site)

        self.assertEquals(gettext('headline'), 'Headline!')
예제 #23
0
def test_image_browser(rf: RequestFactory):
    c = ChallengeFactory(short_name='testproj-image-browser')
    p = PageFactory(challenge=c)
    template = Template('{% load image_browser from grandchallenge_tags %}'
                        '{% image_browser path:public_html '
                        'config:public_html/promise12_viewer_config_new.js %}')
    context = RequestContext(request=rf.get(
        '/results/?id=CBA&folder=20120627202920_304_CBA_Results'))
    context.page = p
    context.update({'site': c})
    rendered = template.render(context)
    assert "pageError" not in rendered
    assert "Error rendering Visualization" not in rendered
    assert "20120627202920_304_CBA_Results" in rendered
    assert "Results viewer" in rendered
def test_page_admin_permissions(view, client, TwoChallengeSets):
    if view == 'pages:delete':
        PageFactory(
            challenge=TwoChallengeSets.ChallengeSet1.challenge,
            title='challenge1pagepermtest',
        )
        reverse_kwargs = {'page_title': 'challenge1pagepermtest'}
    else:
        reverse_kwargs = None
    validate_admin_only_view(
        viewname=view,
        two_challenge_set=TwoChallengeSets,
        client=client,
        reverse_kwargs=reverse_kwargs,
    )
예제 #25
0
def test_page_admin_permissions(view, client, two_challenge_sets):
    if view == "pages:delete":
        PageFactory(
            challenge=two_challenge_sets.challenge_set_1.challenge,
            title="challenge1pagepermtest",
        )
        reverse_kwargs = {"page_title": "challenge1pagepermtest"}
    else:
        reverse_kwargs = None
    validate_admin_only_view(
        viewname=view,
        two_challenge_set=two_challenge_sets,
        client=client,
        reverse_kwargs=reverse_kwargs,
    )
def test_insert_graph(rf: RequestFactory, view_type):
    c = ChallengeFactory(short_name="testproj1734621")
    p = PageFactory(challenge=c)
    r = rf.get("/Result/?id=4")
    template = Template("{% load insert_graph from grandchallenge_tags %}"
                        "{% insert_graph 4.php type:"
                        f"{view_type}"
                        " %}")
    context = RequestContext(r, {"currentpage": p})
    rendered = template.render(context)
    assert "pageError" not in rendered
    assert "Error rendering graph from file" not in rendered
    if view_type == "anode09":
        assert "Created with matplotlib" in rendered
    else:
        assert "comictablecontainer" in rendered
예제 #27
0
def test_insert_graph(rf: RequestFactory, view_type):
    c = ChallengeFactory(short_name='testproj1734621')
    p = PageFactory(challenge=c)
    r = rf.get('/Result/?id=4')
    template = Template('{% load insert_graph from grandchallenge_tags %}'
                        '{% insert_graph 4.php type:'
                        f'{view_type}'
                        ' %}')
    context = RequestContext(request=r)
    context.page = p
    rendered = template.render(context)
    assert "pageError" not in rendered
    assert "Error rendering graph from file" not in rendered
    if view_type == 'anode09':
        assert "Created with matplotlib" in rendered
    else:
        assert "comictablecontainer" in rendered
예제 #28
0
    def test_empty_use_default(self):
        site = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010002')
        )

        SystemStringFactory.create(
            identifier='title',
            string='',
            site=site,
            modified=False,
        )

        set_site(site)
        fill_cache(site)
        preload(site)

        self.assertEquals(systemtext('title', default='Default title'), 'Default title')
예제 #29
0
    def test_group_replace(self):
        site = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010002')
        )

        SystemStringFactory.create(
            identifier='sub_headline',
            string='My subheadline',
            group='sub',
            site=site,
            modified=True,
        )

        set_site(site)
        fill_cache(site)
        preload(site)

        self.assertEquals(systemtext('sub_headline', 'sub'), 'My subheadline')
예제 #30
0
    def test_empty_but_modified_setting_override(self):
        app_settings.SYSTEMTEXT_USE_DEFAULT_ON_EMPTY = True

        site = SiteFactory.create(
            root_page=PageFactory.create(title='mypage', path='00010002')
        )

        SystemStringFactory.create(
            identifier='title',
            string='',
            site=site,
            modified=True,
        )

        set_site(site)
        fill_cache(site)
        preload(site)

        self.assertEquals(systemtext('title', default='Default title'), 'Default title')
        self.assertEquals(systemtext('title'), '')