aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_model_serializer.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_model_serializer.py')
-rw-r--r--tests/test_model_serializer.py45
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)