diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/generic_views/base.py | 19 | ||||
| -rw-r--r-- | tests/regressiontests/generic_views/tests.py | 3 | ||||
| -rw-r--r-- | tests/regressiontests/generic_views/views.py | 22 |
3 files changed, 39 insertions, 5 deletions
diff --git a/tests/regressiontests/generic_views/base.py b/tests/regressiontests/generic_views/base.py index 6528dc6723..e18ed2a2a7 100644 --- a/tests/regressiontests/generic_views/base.py +++ b/tests/regressiontests/generic_views/base.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import + import time from django.core.exceptions import ImproperlyConfigured @@ -6,6 +8,7 @@ from django.test import TestCase, RequestFactory from django.utils import unittest from django.views.generic import View, TemplateView, RedirectView +from . import views class SimpleView(View): """ @@ -331,3 +334,19 @@ class RedirectViewTest(unittest.TestCase): # we can't use self.rf.get because it always sets QUERY_STRING response = RedirectView.as_view(url='/bar/')(self.rf.request(PATH_INFO='/foo/')) self.assertEqual(response.status_code, 301) + + +class GetContextDataTest(unittest.TestCase): + + def test_get_context_data_super(self): + test_view = views.CustomContextView() + context = test_view.get_context_data(kwarg_test='kwarg_value') + + # the test_name key is inserted by the test classes parent + self.assertTrue('test_name' in context) + self.assertEqual(context['kwarg_test'], 'kwarg_value') + self.assertEqual(context['custom_key'], 'custom_value') + + # test that kwarg overrides values assigned higher up + context = test_view.get_context_data(test_name='test_value') + self.assertEqual(context['test_name'], 'test_value') diff --git a/tests/regressiontests/generic_views/tests.py b/tests/regressiontests/generic_views/tests.py index 72aab035a8..c985ad3309 100644 --- a/tests/regressiontests/generic_views/tests.py +++ b/tests/regressiontests/generic_views/tests.py @@ -1,6 +1,7 @@ from __future__ import absolute_import -from .base import ViewTest, TemplateViewTest, RedirectViewTest +from .base import (ViewTest, TemplateViewTest, RedirectViewTest, + GetContextDataTest) from .dates import (ArchiveIndexViewTests, YearArchiveViewTests, MonthArchiveViewTests, WeekArchiveViewTests, DayArchiveViewTests, DateDetailViewTests) diff --git a/tests/regressiontests/generic_views/views.py b/tests/regressiontests/generic_views/views.py index 5ff9cf0e65..1e70ba4b46 100644 --- a/tests/regressiontests/generic_views/views.py +++ b/tests/regressiontests/generic_views/views.py @@ -14,10 +14,9 @@ class CustomTemplateView(generic.TemplateView): template_name = 'generic_views/about.html' def get_context_data(self, **kwargs): - return { - 'params': kwargs, - 'key': 'value' - } + context = super(CustomTemplateView, self).get_context_data(**kwargs) + context.update({'key': 'value'}) + return context class ObjectDetail(generic.DetailView): @@ -184,3 +183,18 @@ class BookDetailGetObjectCustomQueryset(BookDetail): def get_object(self, queryset=None): return super(BookDetailGetObjectCustomQueryset,self).get_object( queryset=Book.objects.filter(pk=2)) + +class CustomContextView(generic.detail.SingleObjectMixin, generic.View): + model = Book + object = Book(name='dummy') + + def get_object(self): + return Book(name="dummy") + + def get_context_data(self, **kwargs): + context = {'custom_key': 'custom_value'} + context.update(kwargs) + return super(CustomContextView, self).get_context_data(**context) + + def get_context_object_name(self, obj): + return "test_name" |
