mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 19:40:13 +03:00
Added test that shows the exception being raised
This commit is contained in:
parent
f78b3187df
commit
8a0b4eaa56
|
@ -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}'
|
||||
|
|
Loading…
Reference in New Issue
Block a user