Re-implement unit tests depending on dropdown markup

pull/10557/head
Thibaud Colas 2023-06-16 11:52:31 +01:00
rodzic 586358632e
commit 830c7c62d8
8 zmienionych plików z 42 dodań i 54 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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 %}
<a href="{{ translation.url }}" data-locale-selector-link>
{{ translation.locale.get_display_name }}

Wyświetl plik

@ -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")

Wyświetl plik

@ -1112,8 +1112,7 @@ class TestCanChoosePage(WagtailTestUtils, TestCase):
class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase):
fixtures = ["test.json"]
LOCALE_SELECTOR_HTML = '<a href="javascript:void(0)" aria-label="English" class="c-dropdown__button u-btn-current w-no-underline">'
LOCALE_INDICATOR_HTML = '<use href="#icon-site"></use></svg>\n English'
LOCALE_SELECTOR_HTML = r"data-locale-selector[^<]+<button[^<]+<svg[^<]+<use[^<]+<\/use[^<]+<\/svg[^<]+English"
def setUp(self):
self.root_page = Page.objects.get(id=2)
@ -1132,7 +1131,9 @@ class TestPageChooserLocaleSelector(WagtailTestUtils, TestCase):
switch_to_french_url = self.get_choose_page_url(
self.fr_locale, parent_page_id=self.child_page_fr.pk
)
self.LOCALE_SELECTOR_HTML_FR = f'<a href="{switch_to_french_url}" aria-label="French" class="u-link is-live w-no-underline">'
self.LOCALE_SELECTOR_HTML_FR = (
f'<a href="{switch_to_french_url}" data-locale-selector-link>'
)
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'<a href="{switch_to_french_url}" aria-label="French" class="u-link is-live w-no-underline">'
fr_selector = f'<a href="{switch_to_french_url}" data-locale-selector-link>'
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(
'<a href="javascript:void(0)" aria-label="French" class="c-dropdown__button u-btn-current w-no-underline">',
self.assertRegex(
html,
r"data-locale-selector[^<]+<button[^<]+<svg[^<]+<use[^<]+<\/use[^<]+<\/svg[^<]+French",
)
switch_to_english_url = self.get_choose_page_url(
locale=Locale.objects.get(language_code="en")
)
self.assertIn(
f'<a href="{switch_to_english_url}" aria-label="English" class="u-link is-live w-no-underline">',
f'<a href="{switch_to_english_url}" data-locale-selector-link>',
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)

Wyświetl plik

@ -34,7 +34,7 @@ class TestAdminPageChooserWidget(TestCase):
self.assertInHTML(
"""<input id="__ID__" name="__NAME__" type="hidden" />""", 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("""<input name="test" type="hidden" />""", 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)

Wyświetl plik

@ -260,10 +260,10 @@ class TestFormsIndexWithLocalisationEnabled(WagtailTestUtils, TestCase):
)
def get_switch_current_locale_markup(self, locale):
return f'<a href="javascript:void(0)" aria-label="{locale.get_display_name()}" class="c-dropdown__button u-btn-current w-no-underline">'
return rf"data-locale-selector[^<]+<button[^<]+<svg[^<]+<use[^<]+<\/use[^<]+<\/svg[^<]+{locale.get_display_name()}"
def get_switch_link_markup(self, locale):
return f'<a href="{self.forms_index_url}?locale={locale.language_code}" aria-label="{locale.get_display_name()}" class="u-link is-live w-no-underline">'
return f'<a href="{self.forms_index_url}?locale={locale.language_code}" data-locale-selector-link>'
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):

Wyświetl plik

@ -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 = '<a href="javascript:void(0)" aria-label="French" class="c-dropdown__button u-btn-current w-no-underline">'
self.assertContains(response, expected)
self.assertRegex(
response.content.decode(),
r"data-locale-selector[^<]+<button[^<]+<svg[^<]+<use[^<]+<\/use[^<]+<\/svg[^<]+French",
)
# Check that the other locale link is right
expected = """
<a href="/admin/modeladmintest/translatablebook/create/?locale=en" aria-label="English" class="u-link is-live w-no-underline">
English
</a>"""
self.assertContains(response, expected, html=True)
expected = '<a href="/admin/modeladmintest/translatablebook/create/?locale=en" data-locale-selector-link>'
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 = """
<a href="/admin/modeladmintest/translatablebook/edit/1/?locale=en" aria-label="English" class="u-link is-live w-no-underline">
<a href="/admin/modeladmintest/translatablebook/edit/1/?locale=en" data-locale-selector-link>
English
</a>"""
self.assertContains(response, expected, html=True)

Wyświetl plik

@ -227,7 +227,7 @@ class TestLocaleSelectorOnList(WagtailTestUtils, TestCase):
)
self.assertContains(
response,
f'<a href="{switch_to_french_url}" aria-label="French" class="u-link is-live w-no-underline">',
f'<a href="{switch_to_french_url}" data-locale-selector-link>',
)
# 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'<a href="{switch_to_french_url}" 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_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(
'<input type="hidden" name="__NAME__" id="__ID__">', js_args[0]
)
self.assertIn(">Choose advert<", js_args[0])
self.assertIn("Choose advert", js_args[0])
self.assertEqual(js_args[1], "__ID__")