Added test that shows the exception being raised

This commit is contained in:
Kevin Brown 2013-12-14 11:56:30 -05:00
parent f78b3187df
commit 8a0b4eaa56

View File

@ -6,10 +6,12 @@ from django.core.cache import cache
from django.test import TestCase
from django.utils import unittest
from django.utils.translation import ugettext_lazy as _
from rest_framework import status, permissions
from rest_framework import serializers, status, permissions
from rest_framework.compat import yaml, etree, patterns, url, include, six, StringIO
from rest_framework.tests.models import Album, Photo
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.generics import GenericAPIView
from rest_framework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \
XMLRenderer, JSONPRenderer, BrowsableAPIRenderer, UnicodeJSONRenderer
from rest_framework.parsers import YAMLParser, XMLParser
@ -96,6 +98,31 @@ class HTMLView1(APIView):
def get(self, request, **kwargs):
return Response('text')
class ReadOnlySerializer(serializers.ModelSerializer):
this = serializers.HyperlinkedRelatedField(source="album",
queryset=Album.objects,
view_name="nothing")
that = serializers.HyperlinkedRelatedField(source="album", read_only=True,
queryset=Album.objects,
view_name="nothing")
class Meta:
model = Photo
fields = ("this", "that", )
class ReadOnlyView(GenericAPIView):
renderer_classes = (BrowsableAPIRenderer, )
serializer_class = ReadOnlySerializer
def get(self, request, **kwargs):
return Response("text")
def post(self, request, **kwargs):
return Response("text")
urlpatterns = patterns('',
url(r'^.*\.(?P<format>.+)$', MockView.as_view(renderer_classes=[RendererA, RendererB])),
url(r'^$', MockView.as_view(renderer_classes=[RendererA, RendererB])),
@ -106,6 +133,7 @@ urlpatterns = patterns('',
url(r'^html$', HTMLView.as_view()),
url(r'^html1$', HTMLView1.as_view()),
url(r'^empty$', EmptyGETView.as_view()),
url(r"^read_only$", ReadOnlyView.as_view()),
url(r'^api', include('rest_framework.urls', namespace='rest_framework'))
)
@ -251,6 +279,13 @@ class RendererEndToEndTests(TestCase):
self.assertEqual(resp.get('Content-Type', None), None)
self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT)
def test_read_only_fields_browsable_api(self):
# An album must exist for the exception to be raised
album = Album(title="test")
album.save()
resp = self.client.get("/read_only")
_flat_repr = '{"foo": ["bar", "baz"]}'
_indented_repr = '{\n "foo": [\n "bar",\n "baz"\n ]\n}'