diff options
| author | Thomas Tanner <tanner@gmx.net> | 2015-03-16 01:33:59 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-03-16 09:12:57 -0400 |
| commit | 28986da4ca167ae257abcaf7caea230eca2bcd80 (patch) | |
| tree | 7db7c27812e72b860c088d98a7b36d2b1f016023 /tests/forms_tests | |
| parent | 39573a11db694a584de6ca2a858fa05ec4ea13e1 (diff) | |
Fixed #5986 -- Added ability to customize order of Form fields
Diffstat (limited to 'tests/forms_tests')
| -rw-r--r-- | tests/forms_tests/tests/test_forms.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py index 589a9cfc84..ef447a94e1 100644 --- a/tests/forms_tests/tests/test_forms.py +++ b/tests/forms_tests/tests/test_forms.py @@ -1046,6 +1046,49 @@ class FormsTestCase(TestCase): <tr><th>Field13:</th><td><input type="text" name="field13" /></td></tr> <tr><th>Field14:</th><td><input type="text" name="field14" /></td></tr>""") + def test_explicit_field_order(self): + class TestFormParent(Form): + field1 = CharField() + field2 = CharField() + field4 = CharField() + field5 = CharField() + field6 = CharField() + field_order = ['field6', 'field5', 'field4', 'field2', 'field1'] + + class TestForm(TestFormParent): + field3 = CharField() + field_order = ['field2', 'field4', 'field3', 'field5', 'field6'] + + class TestFormRemove(TestForm): + field1 = None + + class TestFormMissing(TestForm): + field_order = ['field2', 'field4', 'field3', 'field5', 'field6', 'field1'] + field1 = None + + class TestFormInit(TestFormParent): + field3 = CharField() + field_order = None + + def __init__(self, **kwargs): + super(TestFormInit, self).__init__(**kwargs) + self.order_fields(field_order=TestForm.field_order) + + p = TestFormParent() + self.assertEqual(list(p.fields.keys()), TestFormParent.field_order) + p = TestFormRemove() + self.assertEqual(list(p.fields.keys()), TestForm.field_order) + p = TestFormMissing() + self.assertEqual(list(p.fields.keys()), TestForm.field_order) + p = TestForm() + self.assertEqual(list(p.fields.keys()), TestFormMissing.field_order) + p = TestFormInit() + order = list(TestForm.field_order) + ['field1'] + self.assertEqual(list(p.fields.keys()), order) + TestForm.field_order = ['unknown'] + p = TestForm() + self.assertEqual(list(p.fields.keys()), ['field1', 'field2', 'field4', 'field5', 'field6', 'field3']) + def test_form_html_attributes(self): # Some Field classes have an effect on the HTML attributes of their associated # Widget. If you set max_length in a CharField and its associated widget is |
