diff options
| author | Tom Christie | 2013-02-12 23:01:20 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-02-12 23:01:20 +0000 |
| commit | f341ead49944050b7902254ed4c89b3c9c11a018 (patch) | |
| tree | edbca33c15d21faf0dd11d1a18a29bb1f7240f1c | |
| parent | 15fa42b647e1bac0a9a9309bd4ad2d810e55c9cd (diff) | |
| download | django-rest-framework-f341ead49944050b7902254ed4c89b3c9c11a018.tar.bz2 | |
Test for None in 'dotted.source' component.
Closes #643.
| -rw-r--r-- | rest_framework/tests/serializer.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 799ca108..da110138 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -747,6 +747,9 @@ class ManyRelatedTests(TestCase): class RelatedTraversalTest(TestCase): def test_nested_traversal(self): + """ + Source argument should support dotted.source notation. + """ user = Person.objects.create(name="django") post = BlogPost.objects.create(title="Test blog post", writer=user) post.blogpostcomment_set.create(text="I love this blog post") @@ -785,6 +788,24 @@ class RelatedTraversalTest(TestCase): self.assertEqual(serializer.data, expected) + def test_nested_traversal_with_none(self): + """ + If a component of the dotted.source is None, return None for the field. + """ + from rest_framework.tests.models import NullableForeignKeySource + instance = NullableForeignKeySource.objects.create(name='Source with null FK') + + class NullableSourceSerializer(serializers.Serializer): + target_name = serializers.Field(source='target.name') + + serializer = NullableSourceSerializer(instance=instance) + + expected = { + 'target_name': None, + } + + self.assertEqual(serializer.data, expected) + def test_queryset_nested_traversal(self): """ Relational fields should be able to use methods as their source. @@ -800,7 +821,6 @@ class RelatedTraversalTest(TestCase): obj = ClassWithQuerysetMethod() serializer = QuerysetMethodSerializer(obj) - self.assertEquals(serializer.data, {'blogposts': [u'BlogPost object']}) self.assertEquals(serializer.data, {'blogposts': ['BlogPost object']}) |
