aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/tests/response.py
diff options
context:
space:
mode:
Diffstat (limited to 'djangorestframework/tests/response.py')
-rw-r--r--djangorestframework/tests/response.py42
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'