summaryrefslogtreecommitdiff
path: root/tests/forms_tests/widget_tests/test_select.py
diff options
context:
space:
mode:
authorPreston Timmons <prestontimmons@gmail.com>2016-12-27 17:00:56 -0500
committerTim Graham <timograham@gmail.com>2016-12-27 17:50:10 -0500
commitb52c73008a9d67e9ddbb841872dc15cdd3d6ee01 (patch)
treeb58a2d18242db5234b18678116e07e6f6bbc7cb3 /tests/forms_tests/widget_tests/test_select.py
parent51cde873d9fc8e4540f4efecbd39cfe8e770be38 (diff)
Fixed #15667 -- Added template-based widget rendering.
Thanks Carl Meyer and Tim Graham for contributing to the patch.
Diffstat (limited to 'tests/forms_tests/widget_tests/test_select.py')
-rw-r--r--tests/forms_tests/widget_tests/test_select.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/forms_tests/widget_tests/test_select.py b/tests/forms_tests/widget_tests/test_select.py
index dde84c476f..4b717b6043 100644
--- a/tests/forms_tests/widget_tests/test_select.py
+++ b/tests/forms_tests/widget_tests/test_select.py
@@ -221,6 +221,68 @@ class SelectTest(WidgetTest):
</select>"""
))
+ def test_options(self):
+ options = list(self.widget(choices=self.beatles).options(
+ 'name', ['J'], attrs={'class': 'super'},
+ ))
+ self.assertEqual(len(options), 4)
+ self.assertEqual(options[0]['name'], 'name')
+ self.assertEqual(options[0]['value'], 'J')
+ self.assertEqual(options[0]['label'], 'John')
+ self.assertEqual(options[0]['index'], '0')
+ self.assertEqual(options[0]['selected'], True)
+ # Template-related attributes
+ self.assertEqual(options[1]['name'], 'name')
+ self.assertEqual(options[1]['value'], 'P')
+ self.assertEqual(options[1]['label'], 'Paul')
+ self.assertEqual(options[1]['index'], '1')
+ self.assertEqual(options[1]['selected'], False)
+
+ def test_optgroups(self):
+ choices = [
+ ('Audio', [
+ ('vinyl', 'Vinyl'),
+ ('cd', 'CD'),
+ ]),
+ ('Video', [
+ ('vhs', 'VHS Tape'),
+ ('dvd', 'DVD'),
+ ]),
+ ('unknown', 'Unknown'),
+ ]
+ groups = list(self.widget(choices=choices).optgroups(
+ 'name', ['vhs'], attrs={'class': 'super'},
+ ))
+ self.assertEqual(len(groups), 3)
+ self.assertEqual(groups[0][0], None)
+ self.assertEqual(groups[0][2], 0)
+ self.assertEqual(len(groups[0][1]), 1)
+ options = groups[0][1]
+ self.assertEqual(options[0]['name'], 'name')
+ self.assertEqual(options[0]['value'], 'unknown')
+ self.assertEqual(options[0]['label'], 'Unknown')
+ self.assertEqual(options[0]['index'], '0')
+ self.assertEqual(options[0]['selected'], False)
+ self.assertEqual(groups[1][0], 'Audio')
+ self.assertEqual(groups[1][2], 1)
+ self.assertEqual(len(groups[1][1]), 2)
+ options = groups[1][1]
+ self.assertEqual(options[0]['name'], 'name')
+ self.assertEqual(options[0]['value'], 'vinyl')
+ self.assertEqual(options[0]['label'], 'Vinyl')
+ self.assertEqual(options[0]['index'], '1_0')
+ self.assertEqual(options[1]['index'], '1_1')
+ self.assertEqual(groups[2][0], 'Video')
+ self.assertEqual(groups[2][2], 2)
+ self.assertEqual(len(groups[2][1]), 2)
+ options = groups[2][1]
+ self.assertEqual(options[0]['name'], 'name')
+ self.assertEqual(options[0]['value'], 'vhs')
+ self.assertEqual(options[0]['label'], 'VHS Tape')
+ self.assertEqual(options[0]['index'], '2_0')
+ self.assertEqual(options[0]['selected'], True)
+ self.assertEqual(options[1]['index'], '2_1')
+
def test_deepcopy(self):
"""
__deepcopy__() should copy all attributes properly (#25085).