From 5942ab5eb165ee2e759174e297148a40dd855920 Mon Sep 17 00:00:00 2001 From: David Smith Date: Fri, 11 Jun 2021 07:39:12 +0100 Subject: Refs #32338 -- Made RadioSelect/CheckboxSelectMultiple render in
tags. This improves accessibility for screen reader users. --- tests/forms_tests/tests/test_forms.py | 108 ++++++------- tests/forms_tests/tests/test_i18n.py | 22 +-- .../widget_tests/test_checkboxselectmultiple.py | 175 +++++++++------------ tests/forms_tests/widget_tests/test_radioselect.py | 132 ++++++++-------- 4 files changed, 207 insertions(+), 230 deletions(-) (limited to 'tests/forms_tests') diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py index 212af2ad14..83dc5fec20 100644 --- a/tests/forms_tests/tests/test_forms.py +++ b/tests/forms_tests/tests/test_forms.py @@ -585,20 +585,20 @@ class FormsTestCase(SimpleTestCase): language = ChoiceField(choices=[('P', 'Python'), ('J', 'Java')], widget=RadioSelect) f = FrameworkForm(auto_id=False) - self.assertHTMLEqual(str(f['language']), """""") + self.assertHTMLEqual(str(f['language']), """
+
+
+
""") self.assertHTMLEqual(f.as_table(), """Name: -Language:""") +Language:
+
+
+
""") self.assertHTMLEqual(f.as_ul(), """
  • Name:
  • -
  • Language:
      -
    • -
    • -
  • """) +
  • Language:
    +
    +
    +
  • """) # Regarding auto_id and self.assertHTMLEqual( f.as_table(), """ -""" +
    +
    +
    +
    """ ) self.assertHTMLEqual( f.as_ul(), """
  • -
    • -
    • -
    • -
  • """ +
  • +
    +
    +
  • """ ) self.assertHTMLEqual( f.as_p(), """

    -

    """ +

    +
    +
    +

    """ ) # Test iterating on individual radios in a template @@ -870,20 +870,20 @@ Java ) f = SongForm(auto_id=False) - self.assertHTMLEqual(str(f['composers']), """""") + self.assertHTMLEqual(str(f['composers']), """
    +
    +
    +
    """) f = SongForm({'composers': ['J']}, auto_id=False) - self.assertHTMLEqual(str(f['composers']), """""") + self.assertHTMLEqual(str(f['composers']), """
    +
    +
    +
    """) f = SongForm({'composers': ['J', 'P']}, auto_id=False) - self.assertHTMLEqual(str(f['composers']), """""") + self.assertHTMLEqual(str(f['composers']), """
    +
    +
    +
    """) # Test iterating on individual checkboxes in a template t = Template('{% for checkbox in form.composers %}
    {{ checkbox }}
    {% endfor %}') self.assertHTMLEqual(t.render(Context({'form': f})), """
    f = SongForm(auto_id='%s_id') self.assertHTMLEqual( str(f['composers']), - """
      -
    • -
    • -
    """ + """
    +
    +
    +
    """ ) def test_multiple_choice_list_data(self): diff --git a/tests/forms_tests/tests/test_i18n.py b/tests/forms_tests/tests/test_i18n.py index ec1f323f1a..d941902af2 100644 --- a/tests/forms_tests/tests/test_i18n.py +++ b/tests/forms_tests/tests/test_i18n.py @@ -57,15 +57,15 @@ class FormsI18nTests(SimpleTestCase): self.assertHTMLEqual( f.as_p(), '

    ' - '

      \n' - '
    • \n' - '
    \n' + '
    \n
  • \n
    \n

    ' + 'Nainen
    \n

    ' ) # Translated error messages @@ -77,14 +77,14 @@ class FormsI18nTests(SimpleTestCase): '\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c' '\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.\n' '

    ' - '

    ' + 'Nainen\n

    ' ) def test_select_translated_text(self): diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py index 42555d98a6..05406894dd 100644 --- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py +++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py @@ -11,39 +11,39 @@ class CheckboxSelectMultipleTest(WidgetTest): widget = CheckboxSelectMultiple def test_render_value(self): - self.check_html(self.widget(choices=self.beatles), 'beatles', ['J'], html=( - """""" - )) + self.check_html(self.widget(choices=self.beatles), 'beatles', ['J'], html=""" +
    +
    +
    +
    +
    +
    + """) def test_render_value_multiple(self): - self.check_html(self.widget(choices=self.beatles), 'beatles', ['J', 'P'], html=( - """""" - )) + self.check_html(self.widget(choices=self.beatles), 'beatles', ['J', 'P'], html=""" +
    +
    +
    +
    +
    +
    + """) def test_render_none(self): """ If the value is None, none of the options are selected, even if the choices have an empty option. """ - self.check_html(self.widget(choices=(('', 'Unknown'),) + self.beatles), 'beatles', None, html=( - """""" - )) + self.check_html(self.widget(choices=(('', 'Unknown'),) + self.beatles), 'beatles', None, html=""" +
    +
    +
    +
    +
    +
    +
    + """) def test_nested_choices(self): nested_choices = ( @@ -52,31 +52,23 @@ class CheckboxSelectMultipleTest(WidgetTest): ('Video', (('vhs', 'VHS'), ('dvd', 'DVD'))), ) html = """ - +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    """ self.check_html( self.widget(choices=nested_choices), 'nestchoice', ('vinyl', 'dvd'), @@ -90,31 +82,18 @@ class CheckboxSelectMultipleTest(WidgetTest): ('Video', (('vhs', 'VHS'), ('dvd', 'DVD'))), ) html = """ - +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    """ self.check_html(self.widget(choices=nested_choices), 'nestchoice', ('vinyl', 'dvd'), html=html) @@ -124,15 +103,15 @@ class CheckboxSelectMultipleTest(WidgetTest): """ choices = [('a', 'A'), ('b', 'B'), ('c', 'C')] html = """ - + + """ self.check_html(self.widget(choices=choices), 'letters', ['a', 'c'], attrs={'id': 'abc'}, html=html) @@ -142,15 +121,15 @@ class CheckboxSelectMultipleTest(WidgetTest): """ widget = CheckboxSelectMultiple(attrs={'id': 'abc'}, choices=[('a', 'A'), ('b', 'B'), ('c', 'C')]) html = """ - + + """ self.check_html(widget, 'letters', ['a', 'c'], html=html) @@ -162,11 +141,11 @@ class CheckboxSelectMultipleTest(WidgetTest): (1000000, 'One million'), ] html = """ - +
    +
    +
    +
    +
    """ self.check_html(self.widget(choices=choices), 'numbers', None, html=html) @@ -175,10 +154,10 @@ class CheckboxSelectMultipleTest(WidgetTest): (datetime.time(12, 0), 'noon'), ] html = """ - +
    +
    +
    +
    """ self.check_html(self.widget(choices=choices), 'times', None, html=html) diff --git a/tests/forms_tests/widget_tests/test_radioselect.py b/tests/forms_tests/widget_tests/test_radioselect.py index 0f85563a58..41f771e940 100644 --- a/tests/forms_tests/widget_tests/test_radioselect.py +++ b/tests/forms_tests/widget_tests/test_radioselect.py @@ -11,15 +11,15 @@ class RadioSelectTest(WidgetTest): def test_render(self): choices = (('', '------'),) + self.beatles - self.check_html(self.widget(choices=choices), 'beatle', 'J', html=( - """""" - )) + self.check_html(self.widget(choices=choices), 'beatle', 'J', html=""" +
    +
    +
    +
    +
    +
    +
    + """) def test_nested_choices(self): nested_choices = ( @@ -28,25 +28,23 @@ class RadioSelectTest(WidgetTest): ('Video', (('vhs', 'VHS'), ('dvd', 'DVD'))), ) html = """ - +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    """ self.check_html( self.widget(choices=nested_choices), 'nestchoice', 'dvd', @@ -60,14 +58,14 @@ class RadioSelectTest(WidgetTest): """ widget = RadioSelect(attrs={'id': 'foo'}, choices=self.beatles) html = """ - + +
    +
    +
    + """ self.check_html(widget, 'beatle', 'J', html=html) @@ -77,29 +75,29 @@ class RadioSelectTest(WidgetTest): inputs. """ html = """ - + +
    +
    +
    + """ self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'id': 'bar'}, html=html) def test_class_attrs(self): """ - The