aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJosé Padilla2014-12-13 20:54:35 -0400
committerJosé Padilla2014-12-13 20:54:35 -0400
commite8c0766568cb20a5357c5e6823283f0c187b35b8 (patch)
tree6392f3a4840c5da0a270972b3721409ff89f6db7 /tests
parent0d109c90a74bc575efa6d497a6501aef2b837983 (diff)
downloaddjango-rest-framework-e8c0766568cb20a5357c5e6823283f0c187b35b8.tar.bz2
Support handlers with and without context
Diffstat (limited to 'tests')
-rw-r--r--tests/test_views.py27
1 files changed, 21 insertions, 6 deletions
diff --git a/tests/test_views.py b/tests/test_views.py
index e9b75f06..9952248f 100644
--- a/tests/test_views.py
+++ b/tests/test_views.py
@@ -6,6 +6,7 @@ from django.test import TestCase
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
+from rest_framework.request import Request
from rest_framework.settings import api_settings
from rest_framework.test import APIRequestFactory
from rest_framework.views import APIView
@@ -121,12 +122,7 @@ class TestCustomExceptionHandler(TestCase):
def setUp(self):
self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER
- def exception_handler(exc, context=None):
- self.assertTrue('args' in context)
- self.assertTrue('kwargs' in context)
- self.assertTrue('request' in context)
- self.assertTrue('view' in context)
-
+ def exception_handler(exc):
return Response('Error!', status=status.HTTP_400_BAD_REQUEST)
api_settings.EXCEPTION_HANDLER = exception_handler
@@ -151,3 +147,22 @@ class TestCustomExceptionHandler(TestCase):
expected = 'Error!'
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.data, expected)
+
+ def test_context_exception_handler(self):
+ def exception_handler(exc, context=None):
+ self.assertEqual(context['args'], ())
+ self.assertEqual(context['kwargs'], {})
+ self.assertTrue(isinstance(context['request'], Request))
+ self.assertTrue(isinstance(context['view'], ErrorView))
+
+ return Response('Error!', status=status.HTTP_400_BAD_REQUEST)
+
+ api_settings.EXCEPTION_HANDLER = exception_handler
+
+ view = ErrorView.as_view()
+
+ request = factory.get('/', content_type='application/json')
+ response = view(request)
+ expected = 'Error!'
+ self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+ self.assertEqual(response.data, expected)