diff --git a/wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown.html b/wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown.html index fa1783b818..ed93370ccd 100644 --- a/wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown.html +++ b/wagtail/admin/templates/wagtailadmin/shared/dropdown/dropdown.html @@ -4,7 +4,7 @@ Reusable dropdown menu component built with Tippy.js. - `classname` (string?) - more classes for parent element - - `attrs` (string?) - more classes for parent element + - `attrs` (string?) - more attributes for parent element - `toggle_icon` (string?) - toggle icon identifier - `toggle_label` (string?) - Visible label for the toggle button - `toggle_aria_label` (string?) - aria-label for the toggle button diff --git a/wagtail/admin/templates/wagtailadmin/shared/locale_selector.html b/wagtail/admin/templates/wagtailadmin/shared/locale_selector.html index c6b53f6db7..f0dfdda0f7 100644 --- a/wagtail/admin/templates/wagtailadmin/shared/locale_selector.html +++ b/wagtail/admin/templates/wagtailadmin/shared/locale_selector.html @@ -8,7 +8,7 @@ {% if translations %} {% fragment as toggle_classname %}{% if theme == "large" %}button{% else %}button button-small{% endif %} {{ class }}{% endfragment %} - {% dropdown attrs=self.attrs toggle_icon="arrow-down" toggle_label=locale_label classname="w-inline-block" toggle_classname=toggle_classname %} + {% dropdown attrs="data-locale-selector" toggle_icon="arrow-down" toggle_label=locale_label classname="w-inline-block" toggle_classname=toggle_classname %} {% for translation in translations %} {{ translation.locale.get_display_name }} diff --git a/wagtail/admin/tests/test_buttons_hooks.py b/wagtail/admin/tests/test_buttons_hooks.py index 7002435263..04b8a39733 100644 --- a/wagtail/admin/tests/test_buttons_hooks.py +++ b/wagtail/admin/tests/test_buttons_hooks.py @@ -235,7 +235,7 @@ class TestPageHeaderButtonsHooks(TestButtonsHooks): self.assertEqual(response.status_code, 200) self.assertTemplateUsed( - response, "wagtailadmin/pages/listing/_modern_dropdown.html" + response, "wagtailadmin/pages/listing/_page_header_buttons.html" ) self.assertContains(response, "Another useless header button") diff --git a/wagtail/admin/tests/test_page_chooser.py b/wagtail/admin/tests/test_page_chooser.py index e6aeca20c1..b5dfdf32e6 100644 --- a/wagtail/admin/tests/test_page_chooser.py +++ b/wagtail/admin/tests/test_page_chooser.py @@ -1112,8 +1112,7 @@ class TestCanChoosePage(WagtailTestUtils, TestCase): class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase): fixtures = ["test.json"] - LOCALE_SELECTOR_HTML = '' - LOCALE_INDICATOR_HTML = '\n English' + LOCALE_SELECTOR_HTML = r"data-locale-selector[^<]+' + self.LOCALE_SELECTOR_HTML_FR = ( + f'' + ) self.login() @@ -1160,17 +1161,17 @@ class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase): response = self.client.get(reverse("wagtailadmin_choose_page")) html = response.json().get("html") - self.assertIn(self.LOCALE_SELECTOR_HTML, html) + self.assertRegex(html, self.LOCALE_SELECTOR_HTML) switch_to_french_url = self.get_choose_page_url(locale=self.fr_locale) - fr_selector = f'' + fr_selector = f'' self.assertIn(fr_selector, html) def test_locale_selector(self): response = self.get(self.child_page.pk) html = response.json().get("html") - self.assertIn(self.LOCALE_SELECTOR_HTML, html) + self.assertRegex(html, self.LOCALE_SELECTOR_HTML) self.assertIn(self.LOCALE_SELECTOR_HTML_FR, html) def test_locale_selector_without_translation(self): @@ -1178,8 +1179,7 @@ class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase): response = self.get(self.child_page.pk) html = response.json().get("html") - self.assertNotIn(self.LOCALE_SELECTOR_HTML, html) - self.assertNotIn(self.LOCALE_SELECTOR_HTML_FR, html) + self.assertNotIn("data-locale-selector", html) def test_locale_selector_with_active_locale(self): switch_to_french_url = self.get_choose_page_url( @@ -1188,18 +1188,18 @@ class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase): response = self.client.get(switch_to_french_url) html = response.json().get("html") - self.assertNotIn(self.LOCALE_SELECTOR_HTML, html) + self.assertNotIn(self.LOCALE_SELECTOR_HTML_FR, html) self.assertNotIn(f'data-title="{self.root_page.title}"', html) self.assertIn(self.root_page_fr.title, html) - self.assertIn( - '', + self.assertRegex( html, + r"data-locale-selector[^<]+', + f'', html, ) @@ -1207,5 +1207,4 @@ class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase): def test_locale_selector_not_present_when_i18n_disabled(self): response = self.get(self.child_page.pk) html = response.json().get("html") - self.assertNotIn(self.LOCALE_SELECTOR_HTML, html) - self.assertNotIn(self.LOCALE_SELECTOR_HTML_FR, html) + self.assertNotIn("data-locale-selector", html) diff --git a/wagtail/admin/tests/test_widgets.py b/wagtail/admin/tests/test_widgets.py index 58e2b6699b..9dc26109d2 100644 --- a/wagtail/admin/tests/test_widgets.py +++ b/wagtail/admin/tests/test_widgets.py @@ -34,7 +34,7 @@ class TestAdminPageChooserWidget(TestCase): self.assertInHTML( """""", js_args[0] ) - self.assertIn(">Choose a page<", js_args[0]) + self.assertIn("Choose a page", js_args[0]) self.assertEqual(js_args[1], "__ID__") self.assertEqual( js_args[2], @@ -68,7 +68,7 @@ class TestAdminPageChooserWidget(TestCase): html = widget.render_html("test", None, {}) self.assertInHTML("""""", html) - self.assertIn(">Choose a page<", html) + self.assertIn("Choose a page", html) def test_render_js_init(self): widget = widgets.AdminPageChooser() @@ -116,7 +116,7 @@ class TestAdminPageChooserWidget(TestCase): ) html = widget.render("test", self.child_page, {"id": "test-id"}) - self.assertIn(">Choose a page (Simple Page)<", html) + self.assertIn("Choose a page (Simple Page)", html) def test_render_with_target_model_as_single_instance(self): widget = widgets.AdminPageChooser(target_models=SimplePage) @@ -128,7 +128,7 @@ class TestAdminPageChooserWidget(TestCase): ) html = widget.render("test", self.child_page, {"id": "test-id"}) - self.assertIn(">Choose a page (Simple Page)<", html) + self.assertIn("Choose a page (Simple Page)", html) def test_render_with_target_model_as_single_string(self): widget = widgets.AdminPageChooser(target_models="tests.SimplePage") @@ -140,7 +140,7 @@ class TestAdminPageChooserWidget(TestCase): ) html = widget.render("test", self.child_page, {"id": "test-id"}) - self.assertIn(">Choose a page (Simple Page)<", html) + self.assertIn("Choose a page (Simple Page)", html) def test_render_with_multiple_target_models(self): target_models = [SimplePage, "tests.eventpage"] @@ -153,7 +153,7 @@ class TestAdminPageChooserWidget(TestCase): ) html = widget.render("test", self.child_page, {"id": "test-id"}) - self.assertIn(">Choose a page<", html) + self.assertIn("Choose a page", html) def test_render_js_init_with_can_choose_root(self): widget = widgets.AdminPageChooser(can_choose_root=True) diff --git a/wagtail/contrib/forms/tests/test_views.py b/wagtail/contrib/forms/tests/test_views.py index b1844dff6a..9c46614603 100644 --- a/wagtail/contrib/forms/tests/test_views.py +++ b/wagtail/contrib/forms/tests/test_views.py @@ -260,10 +260,10 @@ class TestFormsIndexWithLocalisationEnabled(WagtailTestUtils, TestCase): ) def get_switch_current_locale_markup(self, locale): - return f'' + return rf"data-locale-selector[^<]+' + return f'' def test_forms_index(self): response = self.client.get(self.forms_index_url) @@ -271,16 +271,18 @@ class TestFormsIndexWithLocalisationEnabled(WagtailTestUtils, TestCase): # Check response self.assertEqual(response.status_code, 200) - self.assertContains( - response, self.get_switch_current_locale_markup(self.en_locale) + self.assertRegex( + response.content.decode(), + self.get_switch_current_locale_markup(self.en_locale), ) self.assertContains(response, self.get_switch_link_markup(self.fr_locale)) response = self.client.get( self.forms_index_url, {"locale": self.fr_locale.language_code} ) - self.assertContains( - response, self.get_switch_current_locale_markup(self.fr_locale) + self.assertRegex( + response.content.decode(), + self.get_switch_current_locale_markup(self.fr_locale), ) self.assertContains(response, self.get_switch_link_markup(self.en_locale)) @@ -313,10 +315,7 @@ class TestFormsIndexWithLocalisationEnabled(WagtailTestUtils, TestCase): def test_switcher_doesnt_show_with_i18n_disabled(self): response = self.client.get(self.forms_index_url) - self.assertNotContains( - response, self.get_switch_current_locale_markup(self.en_locale) - ) - self.assertNotContains(response, self.get_switch_link_markup(self.fr_locale)) + self.assertNotContains(response, "data-locale-selector") class TestFormsSubmissionsList(WagtailTestUtils, TestCase): diff --git a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py index 5933704149..27507ca297 100644 --- a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py +++ b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py @@ -511,15 +511,14 @@ class TestTranslatableCreateView(WagtailTestUtils, TestCase): self.assertEqual(response.status_code, 200) # Check that the locale select exists and is set correctly - expected = '' - self.assertContains(response, expected) + self.assertRegex( + response.content.decode(), + r"data-locale-selector[^<]+ - English - """ - self.assertContains(response, expected, html=True) + expected = '' + self.assertIn(expected, response.content.decode()) class TestRevisableCreateView(WagtailTestUtils, TestCase): @@ -806,7 +805,7 @@ class TestTranslatableBookEditView(WagtailTestUtils, TestCase): # Check the locale switcher is there expected = """ - + English """ self.assertContains(response, expected, html=True) diff --git a/wagtail/snippets/tests/test_snippets.py b/wagtail/snippets/tests/test_snippets.py index f72144ea3c..100c5db472 100644 --- a/wagtail/snippets/tests/test_snippets.py +++ b/wagtail/snippets/tests/test_snippets.py @@ -227,7 +227,7 @@ class TestLocaleSelectorOnList(WagtailTestUtils, TestCase): ) self.assertContains( response, - f'', + f'', ) # Check that the add URLs include the locale @@ -249,14 +249,7 @@ class TestLocaleSelectorOnList(WagtailTestUtils, TestCase): reverse("wagtailsnippets_snippetstests_translatablesnippet:list") ) - switch_to_french_url = ( - reverse("wagtailsnippets_snippetstests_translatablesnippet:list") - + "?locale=fr" - ) - self.assertNotContains( - response, - f'', - ) + self.assertNotContains(response, "data-locale-selector") # Check that the add URLs don't include the locale add_url = reverse("wagtailsnippets_snippetstests_translatablesnippet:add") @@ -271,9 +264,7 @@ class TestLocaleSelectorOnList(WagtailTestUtils, TestCase): def test_locale_selector_not_present_on_non_translatable_snippet(self): response = self.client.get(reverse("wagtailsnippets_tests_advert:list")) - self.assertNotContains( - response, 'aria-label="French" class="u-link is-live w-no-underline">' - ) + self.assertNotContains(response, "data-locale-selector") # Check that the add URLs don't include the locale add_url = reverse("wagtailsnippets_tests_advert:add") @@ -4840,7 +4831,7 @@ class TestAdminSnippetChooserWidget(WagtailTestUtils, TestCase): self.assertInHTML( '', js_args[0] ) - self.assertIn(">Choose advert<", js_args[0]) + self.assertIn("Choose advert", js_args[0]) self.assertEqual(js_args[1], "__ID__")