diff options
| author | Simon Charette <charette.s@gmail.com> | 2014-10-14 14:56:39 -0400 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2014-10-30 19:10:52 -0400 |
| commit | f2ddc439b1938acb6cae693bda9d8cf83a4583be (patch) | |
| tree | ccf7997832415683035ede7a289e79593248f4c2 /tests/generic_views | |
| parent | 19242c675f16ddde37b68af8bbe07de66e237e13 (diff) | |
Fixed #23656 -- Made FormMixin.get_form's form_class argument optional.
Thanks Tim Graham for the review.
Diffstat (limited to 'tests/generic_views')
| -rw-r--r-- | tests/generic_views/test_edit.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/generic_views/test_edit.py b/tests/generic_views/test_edit.py index f58b82b88a..9f152c9af3 100644 --- a/tests/generic_views/test_edit.py +++ b/tests/generic_views/test_edit.py @@ -1,12 +1,14 @@ from __future__ import unicode_literals from unittest import expectedFailure +import warnings from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse from django import forms from django.test import TestCase, override_settings from django.test.client import RequestFactory +from django.utils.deprecation import RemovedInDjango20Warning from django.views.generic.base import View from django.views.generic.edit import FormMixin, ModelFormMixin, CreateView @@ -40,6 +42,43 @@ class FormMixinTests(TestCase): set_kwargs = set_mixin.get_form_kwargs() self.assertEqual(test_string, set_kwargs.get('prefix')) + def test_get_form(self): + class TestFormMixin(FormMixin): + request = RequestFactory().get('/') + + self.assertIsInstance( + TestFormMixin().get_form(forms.Form), forms.Form, + 'get_form() should use provided form class.' + ) + + class FormClassTestFormMixin(TestFormMixin): + form_class = forms.Form + + self.assertIsInstance( + FormClassTestFormMixin().get_form(), forms.Form, + 'get_form() should fallback to get_form_class() if none is provided.' + ) + + def test_get_form_missing_form_class_default_value(self): + with warnings.catch_warnings(record=True) as w: + class MissingDefaultValue(FormMixin): + request = RequestFactory().get('/') + form_class = forms.Form + + def get_form(self, form_class): + return form_class(**self.get_form_kwargs()) + self.assertEqual(len(w), 1) + self.assertEqual(w[0].category, RemovedInDjango20Warning) + self.assertEqual( + str(w[0].message), + '`generic_views.test_edit.MissingDefaultValue.get_form` method ' + 'must define a default value for its `form_class` argument.' + ) + + self.assertIsInstance( + MissingDefaultValue().get_form(), forms.Form, + ) + @override_settings(ROOT_URLCONF='generic_views.urls') class BasicFormTests(TestCase): |
