From 62f5a0a4a1a948f6c1d1b522536fbc83ca50dbc1 Mon Sep 17 00:00:00 2001 From: Henk-Jan van Hasselaar Date: Thu, 23 Mar 2017 16:32:44 +0100 Subject: [PATCH] Add tests for can_choose_page helper --- .../wagtailadmin/tests/test_page_chooser.py | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/wagtail/wagtailadmin/tests/test_page_chooser.py b/wagtail/wagtailadmin/tests/test_page_chooser.py index 62f828272..cca7e39ce 100644 --- a/wagtail/wagtailadmin/tests/test_page_chooser.py +++ b/wagtail/wagtailadmin/tests/test_page_chooser.py @@ -1,12 +1,14 @@ from __future__ import absolute_import, unicode_literals +from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import TestCase from django.utils.http import urlencode from wagtail.tests.testapp.models import EventIndex, EventPage, SimplePage, SingleEventPage from wagtail.tests.utils import WagtailTestUtils -from wagtail.wagtailcore.models import Page +from wagtail.wagtailadmin.views.chooser import can_choose_page +from wagtail.wagtailcore.models import Page, UserPagePermissionsProxy class TestChooserBrowse(TestCase, WagtailTestUtils): @@ -554,3 +556,35 @@ class TestChooserEmailLink(TestCase, WagtailTestUtils): self.assertContains(response, '"title": "new example"') # link text has changed, so tell the caller to use it self.assertContains(response, '"prefer_this_title_as_link_text": true') + + +class TestCanChoosePage(TestCase, WagtailTestUtils): + fixtures = ['test.json'] + + def setUp(self): + self.user = self.login() + self.permission_proxy = UserPagePermissionsProxy(self.user) + self.desired_classes = (Page, ) + + def test_can_choose_page(self): + homepage = Page.objects.get(url_path='/home/') + result = can_choose_page(homepage, self.permission_proxy, self.desired_classes) + self.assertTrue(result) + + def test_with_user_no_permission(self): + homepage = Page.objects.get(url_path='/home/') + # event editor does not have permissions on homepage + event_editor = get_user_model().objects.get(username='eventeditor') + permission_proxy = UserPagePermissionsProxy(event_editor) + result = can_choose_page(homepage, permission_proxy, self.desired_classes, user_perm='copy_to') + self.assertFalse(result) + + def test_with_can_choose_root(self): + root = Page.objects.get(url_path='/') + result = can_choose_page(root, self.permission_proxy, self.desired_classes, can_choose_root=True) + self.assertTrue(result) + + def test_with_can_not_choose_root(self): + root = Page.objects.get(url_path='/') + result = can_choose_page(root, self.permission_proxy, self.desired_classes, can_choose_root=False) + self.assertFalse(result)