mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 12:00:12 +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.test import TestCase
|
||||||
from django.utils import unittest
|
from django.utils import unittest
|
||||||
from django.utils.translation import ugettext_lazy as _
|
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.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.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
from rest_framework.generics import GenericAPIView
|
||||||
from rest_framework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \
|
from rest_framework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \
|
||||||
XMLRenderer, JSONPRenderer, BrowsableAPIRenderer, UnicodeJSONRenderer
|
XMLRenderer, JSONPRenderer, BrowsableAPIRenderer, UnicodeJSONRenderer
|
||||||
from rest_framework.parsers import YAMLParser, XMLParser
|
from rest_framework.parsers import YAMLParser, XMLParser
|
||||||
|
@ -96,6 +98,31 @@ class HTMLView1(APIView):
|
||||||
def get(self, request, **kwargs):
|
def get(self, request, **kwargs):
|
||||||
return Response('text')
|
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('',
|
urlpatterns = patterns('',
|
||||||
url(r'^.*\.(?P<format>.+)$', MockView.as_view(renderer_classes=[RendererA, RendererB])),
|
url(r'^.*\.(?P<format>.+)$', MockView.as_view(renderer_classes=[RendererA, RendererB])),
|
||||||
url(r'^$', 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'^html$', HTMLView.as_view()),
|
||||||
url(r'^html1$', HTMLView1.as_view()),
|
url(r'^html1$', HTMLView1.as_view()),
|
||||||
url(r'^empty$', EmptyGETView.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'))
|
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.get('Content-Type', None), None)
|
||||||
self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT)
|
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"]}'
|
_flat_repr = '{"foo": ["bar", "baz"]}'
|
||||||
_indented_repr = '{\n "foo": [\n "bar",\n "baz"\n ]\n}'
|
_indented_repr = '{\n "foo": [\n "bar",\n "baz"\n ]\n}'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user