Failing test case for creation-only serializers.

This commit is contained in:
Silvio J. Gutierrez 2014-11-03 16:25:25 -05:00
parent 5ee472718a
commit 6dbcbcc9a8
3 changed files with 30 additions and 1 deletions

View File

@ -1,9 +1,10 @@
from __future__ import unicode_literals
from django.conf.urls import patterns
from .views import MockView
from .views import MockView, CreateOnlyView
urlpatterns = patterns(
'',
(r'^$', MockView.as_view()),
(r'^create/$', CreateOnlyView.as_view()),
)

View File

@ -63,3 +63,11 @@ class NoDropdownWithoutAuthTests(TestCase):
def test_dropdown_not_shown_when_logged_out(self):
response = self.client.get('/')
self.assertNotContains(response, '<li class="dropdown">')
class CreatOnlyModelTests(TestCase):
urls = 'tests.browsable_api.no_auth_urls'
def test_create_only_model(self):
with self.assertRaises(AssertionError):
self.client.post('/create/', {'text': 'creating'})

View File

@ -3,8 +3,12 @@ from __future__ import unicode_literals
from rest_framework.views import APIView
from rest_framework import authentication
from rest_framework import renderers
from rest_framework import generics
from rest_framework import serializers
from rest_framework.response import Response
from tests.models import BasicModel
class MockView(APIView):
@ -13,3 +17,19 @@ class MockView(APIView):
def get(self, request):
return Response({'a': 1, 'b': 2, 'c': 3})
class CreateOnlySerializer(serializers.ModelSerializer):
def restore_object(self, attrs, instance=None):
assert instance is None, 'Cannot update models with this serializer'
return super(CreateOnlySerializer, self).restore_object(attrs, instance=instance)
class Meta:
model = BasicModel
class CreateOnlyView(generics.ListCreateAPIView):
authentication_classes = (authentication.SessionAuthentication,)
renderer_classes = (renderers.BrowsableAPIRenderer,)
serializer_class = CreateOnlySerializer
model = BasicModel