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 /rest_framework | |
| parent | 15fa42b647e1bac0a9a9309bd4ad2d810e55c9cd (diff) | |
| download | django-rest-framework-f341ead49944050b7902254ed4c89b3c9c11a018.tar.bz2 | |
Test for None in 'dotted.source' component.
Closes #643.
Diffstat (limited to 'rest_framework')
| -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']})  | 
