diff options
| author | Marc Tamlyn <marc.tamlyn@gmail.com> | 2013-10-15 04:22:34 -0700 |
|---|---|---|
| committer | Marc Tamlyn <marc.tamlyn@gmail.com> | 2013-10-15 04:22:34 -0700 |
| commit | ce823d37109208644ec8a9acf2dfa915c73c42eb (patch) | |
| tree | ee633a34de063fe3bd61cd217b564753df0eb9e9 /tests | |
| parent | ed8919cbcb83302ea71572f5c7d5e6796bb21afa (diff) | |
| parent | b16dd1fe019b38d0dcdf4a400e9377fb06b33178 (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.py | 4 | ||||
| -rw-r--r-- | tests/model_forms/tests.py | 36 |
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']) |
