From f90049316a3ecca6c92e10b57bfa5becbceff386 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 18 Sep 2014 15:47:27 +0100 Subject: Added a model update integration test --- tests/test_model_serializer.py | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'tests/test_model_serializer.py') diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 6f207e02..e0120c31 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -413,3 +413,46 @@ class TestIntegration(TestCase): 'through': [] } self.assertEqual(serializer.data, expected) + + def test_pk_update(self): + new_foreign_key = ForeignKeyTargetModel.objects.create( + name='foreign_key' + ) + new_one_to_one = OneToOneTargetModel.objects.create( + name='one_to_one' + ) + new_many_to_many = [ + ManyToManyTargetModel.objects.create( + name='new many_to_many (%d)' % idx + ) for idx in range(3) + ] + data = { + 'foreign_key': new_foreign_key.pk, + 'one_to_one': new_one_to_one.pk, + 'many_to_many': [item.pk for item in new_many_to_many], + } + + # Serializer should validate okay. + serializer = self.serializer_cls(self.instance, data=data) + assert serializer.is_valid() + + # Creating the instance, relationship attributes should be set. + instance = serializer.save() + assert instance.foreign_key.pk == new_foreign_key.pk + assert instance.one_to_one.pk == new_one_to_one.pk + assert [ + item.pk for item in instance.many_to_many.all() + ] == [ + item.pk for item in new_many_to_many + ] + assert list(instance.through.all()) == [] + + # Representation should be correct. + expected = { + 'id': self.instance.pk, + 'foreign_key': new_foreign_key.pk, + 'one_to_one': new_one_to_one.pk, + 'many_to_many': [item.pk for item in new_many_to_many], + 'through': [] + } + self.assertEqual(serializer.data, expected) -- cgit v1.2.3