diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_model_serializer.py | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index b3dae713..6f207e02 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -360,7 +360,7 @@ class TestIntegration(TestCase): self.serializer_cls = TestSerializer - def test_pk_relationship_representations(self): + def test_pk_retrival(self): serializer = self.serializer_cls(self.instance) expected = { 'id': self.instance.pk, @@ -370,3 +370,46 @@ class TestIntegration(TestCase): 'through': [] } self.assertEqual(serializer.data, expected) + + def test_pk_create(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(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': 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) |
