summaryrefslogtreecommitdiff
path: root/tests/generic_views
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2014-10-14 14:56:39 -0400
committerSimon Charette <charette.s@gmail.com>2014-10-30 19:10:52 -0400
commitf2ddc439b1938acb6cae693bda9d8cf83a4583be (patch)
treeccf7997832415683035ede7a289e79593248f4c2 /tests/generic_views
parent19242c675f16ddde37b68af8bbe07de66e237e13 (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.py39
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):