summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorThomas Tanner <tanner@gmx.net>2015-03-16 01:33:59 +0100
committerTim Graham <timograham@gmail.com>2015-03-16 09:12:57 -0400
commit28986da4ca167ae257abcaf7caea230eca2bcd80 (patch)
tree7db7c27812e72b860c088d98a7b36d2b1f016023 /tests
parent39573a11db694a584de6ca2a858fa05ec4ea13e1 (diff)
Fixed #5986 -- Added ability to customize order of Form fields
Diffstat (limited to 'tests')
-rw-r--r--tests/forms_tests/tests/test_forms.py43
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