From afa75db65ddc4d941b42175ad6936631d71e805b Mon Sep 17 00:00:00 2001 From: James Oakley Date: Wed, 21 Nov 2012 16:36:44 -0800 Subject: [PATCH] Add test for saving a null HyperlinkedRelatedField --- rest_framework/tests/hyperlinkedserializers.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rest_framework/tests/hyperlinkedserializers.py b/rest_framework/tests/hyperlinkedserializers.py index d7effce70..63b2cfcc9 100644 --- a/rest_framework/tests/hyperlinkedserializers.py +++ b/rest_framework/tests/hyperlinkedserializers.py @@ -3,6 +3,7 @@ from django.test import TestCase from django.test.client import RequestFactory from rest_framework import generics, status, serializers from rest_framework.tests.models import Anchor, BasicModel, ManyToManyModel, BlogPost, BlogPostComment, Album, Photo, OptionalRelationModel +import json factory = RequestFactory() @@ -71,7 +72,7 @@ class AlbumDetail(generics.RetrieveAPIView): model = Album -class OptionalRelationDetail(generics.RetrieveAPIView): +class OptionalRelationDetail(generics.RetrieveUpdateDestroyAPIView): model = OptionalRelationModel model_serializer_class = serializers.HyperlinkedModelSerializer @@ -247,3 +248,14 @@ class TestOptionalRelationHyperlinkedView(TestCase): response = self.detail_view(request, pk=1).render() self.assertEquals(response.status_code, status.HTTP_200_OK) self.assertEquals(response.data, self.data) + + def test_put_detail_view(self): + """ + PUT requests to RetrieveUpdateDestroyAPIView with optional relations + should accept None for non existing relations. + """ + # Using the factory, the None somehow becomes u'None', which is not what happens in reality... + #request = factory.put('/optionalrelationmodel-detail/1', data=json.dumps(self.data)) + #response = self.detail_view(request, pk=1).render() + response = self.client.put('/optionalrelation/1/', data=json.dumps(self.data), content_type='application/json') + self.assertEqual(response.status_code, status.HTTP_200_OK)