summaryrefslogtreecommitdiff
path: root/tests/generic_views
diff options
context:
space:
mode:
authorFrançois Freitag <mail@franek.fr>2018-09-19 10:53:05 +0200
committerTim Graham <timograham@gmail.com>2018-12-21 19:01:11 -0500
commite671337e8b35427b379303cbf6808855f04083e8 (patch)
treefb814965339eef4f86f47032ef83ea9d20235e61 /tests/generic_views
parent19e863a844db137045499276f0b0494b180f3f1a (diff)
downloaddjango-e671337e8b35427b379303cbf6808855f04083e8.tar.gz
Fixed #29750 -- Added View.setup() hook for class-based views.
Diffstat (limited to 'tests/generic_views')
-rw-r--r--tests/generic_views/test_base.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/generic_views/test_base.py b/tests/generic_views/test_base.py
index d3e4510e6b..da12b1bbe8 100644
--- a/tests/generic_views/test_base.py
+++ b/tests/generic_views/test_base.py
@@ -233,6 +233,32 @@ class ViewTest(SimpleTestCase):
self.assertNotIn(attribute, dir(bare_view))
self.assertIn(attribute, dir(view))
+ def test_overridden_setup(self):
+ class SetAttributeMixin:
+ def setup(self, request, *args, **kwargs):
+ self.attr = True
+ super().setup(request, *args, **kwargs)
+
+ class CheckSetupView(SetAttributeMixin, SimpleView):
+ def dispatch(self, request, *args, **kwargs):
+ assert hasattr(self, 'attr')
+ return super().dispatch(request, *args, **kwargs)
+
+ response = CheckSetupView.as_view()(self.rf.get('/'))
+ self.assertEqual(response.status_code, 200)
+
+ def test_not_calling_parent_setup_error(self):
+ class TestView(View):
+ def setup(self, request, *args, **kwargs):
+ pass # Not calling supre().setup()
+
+ msg = (
+ "TestView instance has no 'request' attribute. Did you override "
+ "setup() and forget to call super()?"
+ )
+ with self.assertRaisesMessage(AttributeError, msg):
+ TestView.as_view()(self.rf.get('/'))
+
def test_direct_instantiation(self):
"""
It should be possible to use the view by directly instantiating it