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
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
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
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)
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
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
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, )
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
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]
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}, )
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, )
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
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
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" )
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!')
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, )
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
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
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')
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')
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'), '')