From ac9195b0b56e872d3637c9fb275e57ece1645fd8 Mon Sep 17 00:00:00 2001 From: Nathan Hubbell Date: Thu, 4 Sep 2014 11:47:41 -0700 Subject: [PATCH 1/5] Update models.py --- tests/models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/models.py b/tests/models.py index fe064b46a..1a3f35a50 100644 --- a/tests/models.py +++ b/tests/models.py @@ -184,3 +184,9 @@ class NullableOneToOneSource(RESTFrameworkModel): class BasicModelSerializer(serializers.ModelSerializer): class Meta: model = BasicModel + +class PartialUpdateModel(RESTFrameworkModel): + text = models.CharField(max_length=100) + extra = models.CharField(max_length=100) + textra = models.CharField(max_length=100) + text_extra = models.CharField(max_length=100) From c529d017efaf0d7b92f6cd239014f9d8516c5801 Mon Sep 17 00:00:00 2001 From: Nathan Hubbell Date: Thu, 4 Sep 2014 12:01:06 -0700 Subject: [PATCH 2/5] Update test_serializer.py --- tests/test_serializer.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 90f37cf2e..c4144cb0b 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -11,7 +11,7 @@ from tests.models import ( HasPositiveIntegerAsChoice, Album, ActionItem, Anchor, BasicModel, BlankFieldModel, BlogPost, BlogPostComment, Book, CallableDefaultValueModel, DefaultValueModel, ManyToManyModel, Person, ReadOnlyManyToManyModel, Photo, - RESTFrameworkModel, ForeignKeySource + RESTFrameworkModel, ForeignKeySource, PartialUpdateModel ) from tests.models import BasicModelSerializer import datetime @@ -192,6 +192,12 @@ class HyperlinkedForeignKeySourceSerializer(serializers.HyperlinkedModelSerializ model = ForeignKeySource +class PartialUpdateSerializer(serializers.ModelSerializer): + class Meta: + model = PartialUpdateModel + fields = ['text', 'extra', 'textra', 'text_extra'] + + class BasicTests(TestCase): def setUp(self): self.comment = Comment( @@ -348,7 +354,14 @@ class BasicTests(TestCase): serializer = ActionItemSerializerOptionalFields(self.actionitem) exclusions = serializer.get_validation_exclusions() self.assertTrue('title' in exclusions, '`title` field was marked `required=False` and should be excluded') - + + def test_partial_update(self): + serializer = PartialUpdateSerializer(data={'text': 'blah', 'extra': 'blah blah', 'textra': 'blargh', + 'text_extra': 'blarghal'}) + serializer.save() + entry = PartialUpdateModel.objects.get(text='blah') + second_serializer = PartialUpdateSerializer(entry, data={'textra': 'something different'}, partial=True) + self.assertEquals(True, second_serializer.is_valid()) class DictStyleSerializer(serializers.Serializer): """ From 4ca0f00f49ecb54db75c114211c3a7c9a35f3263 Mon Sep 17 00:00:00 2001 From: Nathan Hubbell Date: Thu, 4 Sep 2014 14:43:29 -0700 Subject: [PATCH 3/5] Update test_serializer.py --- tests/test_serializer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_serializer.py b/tests/test_serializer.py index c4144cb0b..f16f1d73c 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -358,7 +358,8 @@ class BasicTests(TestCase): def test_partial_update(self): serializer = PartialUpdateSerializer(data={'text': 'blah', 'extra': 'blah blah', 'textra': 'blargh', 'text_extra': 'blarghal'}) - serializer.save() + if serializer.is_valid(): + serializer.save() entry = PartialUpdateModel.objects.get(text='blah') second_serializer = PartialUpdateSerializer(entry, data={'textra': 'something different'}, partial=True) self.assertEquals(True, second_serializer.is_valid()) From e050c8fffedace82579aef667b38ee379b768ae7 Mon Sep 17 00:00:00 2001 From: Nathan Hubbell Date: Thu, 4 Sep 2014 15:00:41 -0700 Subject: [PATCH 4/5] Update models.py Flake8 --- tests/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/models.py b/tests/models.py index 1a3f35a50..560cb14ae 100644 --- a/tests/models.py +++ b/tests/models.py @@ -185,6 +185,7 @@ class BasicModelSerializer(serializers.ModelSerializer): class Meta: model = BasicModel + class PartialUpdateModel(RESTFrameworkModel): text = models.CharField(max_length=100) extra = models.CharField(max_length=100) From 840bc630f43ad381252504c3742f71d91683fc3f Mon Sep 17 00:00:00 2001 From: Nathan Hubbell Date: Thu, 4 Sep 2014 15:02:17 -0700 Subject: [PATCH 5/5] Update test_serializer.py --- tests/test_serializer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_serializer.py b/tests/test_serializer.py index f16f1d73c..5f91c4298 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -354,8 +354,8 @@ class BasicTests(TestCase): serializer = ActionItemSerializerOptionalFields(self.actionitem) exclusions = serializer.get_validation_exclusions() self.assertTrue('title' in exclusions, '`title` field was marked `required=False` and should be excluded') - - def test_partial_update(self): + + def test_a_partial_update(self): serializer = PartialUpdateSerializer(data={'text': 'blah', 'extra': 'blah blah', 'textra': 'blargh', 'text_extra': 'blarghal'}) if serializer.is_valid(): @@ -364,6 +364,7 @@ class BasicTests(TestCase): second_serializer = PartialUpdateSerializer(entry, data={'textra': 'something different'}, partial=True) self.assertEquals(True, second_serializer.is_valid()) + class DictStyleSerializer(serializers.Serializer): """ Note that we don't have any `restore_object` method, so the default