From 117a24cfc68a0d2b007c85093325cc621e1f4b6f Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Mon, 10 Oct 2016 20:35:06 +0100 Subject: [PATCH] Add test for get_codes --- tests/test_validation_error.py | 37 +++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/test_validation_error.py b/tests/test_validation_error.py index a59bb05f0..8e371a349 100644 --- a/tests/test_validation_error.py +++ b/tests/test_validation_error.py @@ -25,7 +25,7 @@ def error_view(request): ExampleSerializer(data={}).is_valid(raise_exception=True) -class TestValidationErrorWithCode(TestCase): +class TestValidationErrorWithFullDetails(TestCase): def setUp(self): self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER @@ -64,3 +64,38 @@ class TestValidationErrorWithCode(TestCase): response = view(request) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.data, self.expected_response_data) + + +class TestValidationErrorWithCodes(TestCase): + def setUp(self): + self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER + + def exception_handler(exc, request): + data = exc.get_codes() + return Response(data, status=status.HTTP_400_BAD_REQUEST) + + api_settings.EXCEPTION_HANDLER = exception_handler + + self.expected_response_data = { + 'char': ['required'], + 'integer': ['required'], + } + + def tearDown(self): + api_settings.EXCEPTION_HANDLER = self.DEFAULT_HANDLER + + def test_class_based_view_exception_handler(self): + view = ErrorView.as_view() + + request = factory.get('/', content_type='application/json') + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data, self.expected_response_data) + + def test_function_based_view_exception_handler(self): + view = error_view + + request = factory.get('/', content_type='application/json') + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data, self.expected_response_data)