diff options
Diffstat (limited to 'djangorestframework/tests/response.py')
| -rw-r--r-- | djangorestframework/tests/response.py | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/djangorestframework/tests/response.py b/djangorestframework/tests/response.py index fd83da29..07d0f4fb 100644 --- a/djangorestframework/tests/response.py +++ b/djangorestframework/tests/response.py @@ -4,7 +4,7 @@ import unittest from django.conf.urls.defaults import patterns, url, include from django.test import TestCase -from djangorestframework.response import Response, NotAcceptable +from djangorestframework.response import Response, NotAcceptable, ImmediateResponse from djangorestframework.views import View from djangorestframework.compat import RequestFactory from djangorestframework import status @@ -95,10 +95,9 @@ class TestResponseDetermineRenderer(TestCase): class TestResponseRenderContent(TestCase): - - def get_response(self, url='', accept_list=[], content=None): + def get_response(self, url='', accept_list=[], content=None, renderers=None): request = RequestFactory().get(url, HTTP_ACCEPT=','.join(accept_list)) - return Response(request=request, content=content, renderers=DEFAULT_RENDERERS) + return Response(request=request, content=content, renderers=renderers or DEFAULT_RENDERERS) def test_render(self): """ @@ -107,10 +106,43 @@ class TestResponseRenderContent(TestCase): content = {'a': 1, 'b': [1, 2, 3]} content_type = 'application/json' response = self.get_response(accept_list=[content_type], content=content) - response.render() + response = response.render() self.assertEqual(json.loads(response.content), content) self.assertEqual(response['Content-Type'], content_type) + def test_render_no_renderer(self): + """ + Test rendering response when no renderer can satisfy accept. + """ + content = 'bla' + content_type = 'weirdcontenttype' + response = self.get_response(accept_list=[content_type], content=content) + response = response.render() + self.assertEqual(response.status_code, 406) + self.assertIsNotNone(response.content) + + # def test_render_renderer_raises_ImmediateResponse(self): + # """ + # Test rendering response when renderer raises ImmediateResponse + # """ + # class PickyJSONRenderer(BaseRenderer): + # """ + # A renderer that doesn't make much sense, just to try + # out raising an ImmediateResponse + # """ + # media_type = 'application/json' + + # def render(self, obj=None, media_type=None): + # raise ImmediateResponse({'error': '!!!'}, status=400) + + # response = self.get_response( + # accept_list=['application/json'], + # renderers=[PickyJSONRenderer, JSONRenderer] + # ) + # response = response.render() + # self.assertEqual(response.status_code, 400) + # self.assertEqual(response.content, json.dumps({'error': '!!!'})) + DUMMYSTATUS = status.HTTP_200_OK DUMMYCONTENT = 'dummycontent' |
