diff --git a/wagtail/admin/tests/pages/test_edit_page.py b/wagtail/admin/tests/pages/test_edit_page.py index 2a17ae0d50..53bd911872 100644 --- a/wagtail/admin/tests/pages/test_edit_page.py +++ b/wagtail/admin/tests/pages/test_edit_page.py @@ -35,6 +35,7 @@ from wagtail.test.testapp.models import ( EventPageCarouselItem, FilePage, ManyToManyBlogPage, + PageChooserModel, SimplePage, SingleEventPage, StandardIndex, @@ -156,11 +157,31 @@ class TestPageEdit(WagtailTestUtils, TestCase): ) self.assertNotContains(response, "data-form-side-explorer") + # test that usage info is shown + self.assertContains(response, "Used 0 times") + self.assertContains( + response, reverse("wagtailadmin_pages:usage", args=(self.event_page.id,)) + ) + # test that AdminURLFinder returns the edit view for the page url_finder = AdminURLFinder(self.user) expected_url = "/admin/pages/%d/edit/" % self.event_page.id self.assertEqual(url_finder.get_edit_url(self.event_page), expected_url) + def test_usage_count_information_shown(self): + PageChooserModel.objects.create(page=self.event_page) + + # Tests that the edit page loads + response = self.client.get( + reverse("wagtailadmin_pages:edit", args=(self.event_page.id,)) + ) + + # test that usage info is shown + self.assertContains(response, "Used 1 time") + self.assertContains( + response, reverse("wagtailadmin_pages:usage", args=(self.event_page.id,)) + ) + @override_settings(WAGTAIL_WORKFLOW_ENABLED=False) def test_workflow_buttons_not_shown_when_workflow_disabled(self): response = self.client.get( diff --git a/wagtail/admin/tests/pages/test_page_usage.py b/wagtail/admin/tests/pages/test_page_usage.py new file mode 100644 index 0000000000..d075b5f862 --- /dev/null +++ b/wagtail/admin/tests/pages/test_page_usage.py @@ -0,0 +1,72 @@ +from django.test import TestCase +from django.urls import reverse + +from wagtail.models import Page +from wagtail.test.testapp.models import ( + FormPageWithRedirect, + PageChooserModel, + SimplePage, +) +from wagtail.test.utils import WagtailTestUtils + + +class TestPageUsage(WagtailTestUtils, TestCase): + def setUp(self): + self.user = self.login() + self.root_page = Page.objects.get(id=2) + + page = SimplePage( + title="Hello world!", + slug="hello-world", + content="hello", + ) + self.root_page.add_child(instance=page) + page.save_revision().publish() + self.page = SimplePage.objects.get(id=page.id) + + def test_no_usage(self): + usage_url = reverse("wagtailadmin_pages:usage", args=(self.page.id,)) + response = self.client.get(usage_url) + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "wagtailadmin/generic/index.html") + self.assertContains(response, "Usage of") + self.assertContains(response, "Hello world!") + + def test_has_private_usage(self): + PageChooserModel.objects.create(page=self.page) + usage_url = reverse("wagtailadmin_pages:usage", args=(self.page.id,)) + response = self.client.get(usage_url) + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "wagtailadmin/generic/index.html") + self.assertContains(response, "Usage of") + self.assertContains(response, "Hello world!") + + self.assertContains(response, "(Private page chooser model)") + + def test_has_editable_usage(self): + form_page = FormPageWithRedirect( + title="Contact us", + slug="contact-us", + to_address="to@email.com", + from_address="from@email.com", + subject="The subject", + thank_you_redirect_page=self.page, + ) + + form_page = self.root_page.add_child(instance=form_page) + + usage_url = reverse("wagtailadmin_pages:usage", args=(self.page.id,)) + response = self.client.get(usage_url) + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, "wagtailadmin/generic/index.html") + self.assertContains(response, "Usage of") + self.assertContains(response, "Hello world!") + + self.assertContains(response, "Contact us") + self.assertContains( + response, reverse("wagtailadmin_pages:edit", args=(form_page.id,)) + ) + self.assertContains(response, "Thank you redirect page")