summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarc Tamlyn <marc.tamlyn@gmail.com>2013-10-15 04:22:34 -0700
committerMarc Tamlyn <marc.tamlyn@gmail.com>2013-10-15 04:22:34 -0700
commitce823d37109208644ec8a9acf2dfa915c73c42eb (patch)
treeee633a34de063fe3bd61cd217b564753df0eb9e9 /tests
parented8919cbcb83302ea71572f5c7d5e6796bb21afa (diff)
parentb16dd1fe019b38d0dcdf4a400e9377fb06b33178 (diff)
Merge pull request #1382 from loic/ticket19617
Fixed #19617 -- Refactored form metaclasses to support more inheritance scenarios.
Diffstat (limited to 'tests')
-rw-r--r--tests/forms_tests/tests/test_forms.py4
-rw-r--r--tests/model_forms/tests.py36
2 files changed, 38 insertions, 2 deletions
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py
index 1182be3929..33cf24f7c6 100644
--- a/tests/forms_tests/tests/test_forms.py
+++ b/tests/forms_tests/tests/test_forms.py
@@ -1302,10 +1302,10 @@ class FormsTestCase(TestCase):
haircut_type = CharField()
b = Beatle(auto_id=False)
- self.assertHTMLEqual(b.as_ul(), """<li>First name: <input type="text" name="first_name" /></li>
+ self.assertHTMLEqual(b.as_ul(), """<li>Instrument: <input type="text" name="instrument" /></li>
+<li>First name: <input type="text" name="first_name" /></li>
<li>Last name: <input type="text" name="last_name" /></li>
<li>Birthday: <input type="text" name="birthday" /></li>
-<li>Instrument: <input type="text" name="instrument" /></li>
<li>Haircut type: <input type="text" name="haircut_type" /></li>""")
def test_forms_with_prefixes(self):
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index 8acc88b33f..f6e9a886a2 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -1802,3 +1802,39 @@ class M2mHelpTextTest(TestCase):
html = form.as_p()
self.assertInHTML('<ul id="id_status">', html)
self.assertInHTML(dreaded_help_text, html, count=0)
+
+
+class ModelFormInheritanceTests(TestCase):
+ def test_form_subclass_inheritance(self):
+ class Form(forms.Form):
+ age = forms.IntegerField()
+
+ class ModelForm(forms.ModelForm, Form):
+ class Meta:
+ model = Writer
+ fields = '__all__'
+
+ self.assertEqual(list(ModelForm().fields.keys()), ['name', 'age'])
+
+ def test_field_shadowing(self):
+ class ModelForm(forms.ModelForm):
+ class Meta:
+ model = Writer
+ fields = '__all__'
+
+ class Mixin(object):
+ age = None
+
+ class Form(forms.Form):
+ age = forms.IntegerField()
+
+ class Form2(forms.Form):
+ foo = forms.IntegerField()
+
+ self.assertEqual(list(ModelForm().fields.keys()), ['name'])
+ self.assertEqual(list(type(str('NewForm'), (Mixin, Form), {})().fields.keys()), [])
+ self.assertEqual(list(type(str('NewForm'), (Form2, Mixin, Form), {})().fields.keys()), ['foo'])
+ self.assertEqual(list(type(str('NewForm'), (Mixin, ModelForm, Form), {})().fields.keys()), ['name'])
+ self.assertEqual(list(type(str('NewForm'), (ModelForm, Mixin, Form), {})().fields.keys()), ['name'])
+ self.assertEqual(list(type(str('NewForm'), (ModelForm, Form, Mixin), {})().fields.keys()), ['name', 'age'])
+ self.assertEqual(list(type(str('NewForm'), (ModelForm, Form), {'age': None})().fields.keys()), ['name'])