diff --git a/wagtail/admin/tests/pages/test_page_search.py b/wagtail/admin/tests/pages/test_page_search.py index d30b83e7a2..45e36158b0 100644 --- a/wagtail/admin/tests/pages/test_page_search.py +++ b/wagtail/admin/tests/pages/test_page_search.py @@ -4,6 +4,7 @@ from django.contrib.auth.models import Permission from django.core import management from django.test import TransactionTestCase from django.urls import reverse +from django.utils.http import urlencode from wagtail.models import Page from wagtail.test.testapp.models import EventIndex, SimplePage, SingleEventPage @@ -33,10 +34,29 @@ class TestPageSearch(WagtailTestUtils, TransactionTestCase): self.assertEqual(response.status_code, 200) def test_search(self): + # Find root page + root_page = Page.objects.get(id=2) + + # Create a page + new_page = root_page.add_child( + instance=SimplePage( + title="Hello from Cauldron Lake", + slug="bright-falls", + content="It's not a lake, it's an ocean", + live=True, + has_unpublished_changes=False, + ) + ) + response = self.get({"q": "Hello"}) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, "wagtailadmin/pages/search.html") self.assertEqual(response.context["query_string"], "Hello") + next_url = urlencode({"next": reverse("wagtailadmin_pages:search")}) + expected_new_page_copy_url = ( + reverse("wagtailadmin_pages:copy", args=(new_page.pk,)) + f"?{next_url}" + ) + self.assertContains(response, f'href="{expected_new_page_copy_url}"') def test_search_searchable_fields(self): # Find root page @@ -62,6 +82,20 @@ class TestPageSearch(WagtailTestUtils, TransactionTestCase): self.assertContains(response, "There is one matching page") def test_ajax(self): + # Find root page + root_page = Page.objects.get(id=2) + + # Create a page + new_page = root_page.add_child( + instance=SimplePage( + title="Hello from Cauldron Lake", + slug="bright-falls", + content="It's not a lake, it's an ocean", + live=True, + has_unpublished_changes=False, + ) + ) + response = self.get( {"q": "Hello"}, url_name="wagtailadmin_pages:search_results" ) @@ -69,6 +103,11 @@ class TestPageSearch(WagtailTestUtils, TransactionTestCase): self.assertTemplateNotUsed(response, "wagtailadmin/pages/search.html") self.assertTemplateUsed(response, "wagtailadmin/pages/search_results.html") self.assertEqual(response.context["query_string"], "Hello") + next_url = urlencode({"next": reverse("wagtailadmin_pages:search")}) + expected_new_page_copy_url = ( + reverse("wagtailadmin_pages:copy", args=(new_page.pk,)) + f"?{next_url}" + ) + self.assertContains(response, f'href="{expected_new_page_copy_url}"') def test_pagination(self): # page numbers in range should be accepted diff --git a/wagtail/admin/views/pages/search.py b/wagtail/admin/views/pages/search.py index 5322d999bc..aeb98e9fee 100644 --- a/wagtail/admin/views/pages/search.py +++ b/wagtail/admin/views/pages/search.py @@ -165,6 +165,7 @@ class BaseSearchView(PermissionCheckedMixin, BaseListingView): def get_table_kwargs(self): kwargs = super().get_table_kwargs() kwargs["show_locale_labels"] = self.show_locale_labels + kwargs["actions_next_url"] = self.get_index_url() return kwargs def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: