aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-12-21 01:05:37 -0800
committerTom Christie2012-12-21 01:05:37 -0800
commit98919031db425b4379770f373fa18035751b6e4a (patch)
treef71e43c74894d1c06f3c7a0c9ba89ede1afc5d18
parent456d76d2e53265fdb99ca283b6d9e68ae05d0337 (diff)
parentef475eb9bd7754c7248642b4a41093e2d6493b03 (diff)
downloaddjango-rest-framework-98919031db425b4379770f373fa18035751b6e4a.tar.bz2
Merge pull request #522 from maspwr/writable-serializers
Writable Serializers - READ tests
-rw-r--r--rest_framework/tests/nested_relations.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/rest_framework/tests/nested_relations.py b/rest_framework/tests/nested_relations.py
new file mode 100644
index 00000000..b9022cac
--- /dev/null
+++ b/rest_framework/tests/nested_relations.py
@@ -0,0 +1,53 @@
+from copy import deepcopy
+from django.db import models
+from django.test import TestCase
+from rest_framework import serializers
+
+
+# ForeignKey
+
+class ForeignKeyTarget(models.Model):
+ name = models.CharField(max_length=100)
+
+
+class ForeignKeySource(models.Model):
+ name = models.CharField(max_length=100)
+ target = models.ForeignKey(ForeignKeyTarget, related_name='sources')
+
+
+class ForeignKeySourceSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = ForeignKeySource
+
+
+class ForeignKeyTargetSerializer(serializers.ModelSerializer):
+ sources = ForeignKeySourceSerializer()
+
+ class Meta:
+ model = ForeignKeyTarget
+
+
+class ReverseForeignKeyTests(TestCase):
+ def setUp(self):
+ target = ForeignKeyTarget(name='target-1')
+ target.save()
+ new_target = ForeignKeyTarget(name='target-2')
+ new_target.save()
+ for idx in range(1, 4):
+ source = ForeignKeySource(name='source-%d' % idx, target=target)
+ source.save()
+ self.target_data = {'id': 1, 'name': u'target-1', 'sources': [
+ {'id': 1, 'name': u'source-1', 'target': 1},
+ {'id': 2, 'name': u'source-2', 'target': 1},
+ {'id': 3, 'name': u'source-3', 'target': 1},
+ ]}
+ self.new_target_data = {'id': 2, 'name': u'target-2', 'sources': []}
+ self.data = [self.target_data, self.new_target_data]
+
+ def check_serialized_targets(self, data):
+ queryset = ForeignKeyTarget.objects.all()
+ serializer = ForeignKeyTargetSerializer(queryset)
+ self.assertEquals(serializer.data, data)
+
+ def test_reverse_foreign_key_retrieve(self):
+ self.check_serialized_targets(self.data)