mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +03:00
parent
15fa42b647
commit
f341ead499
|
@ -747,6 +747,9 @@ class ManyRelatedTests(TestCase):
|
||||||
|
|
||||||
class RelatedTraversalTest(TestCase):
|
class RelatedTraversalTest(TestCase):
|
||||||
def test_nested_traversal(self):
|
def test_nested_traversal(self):
|
||||||
|
"""
|
||||||
|
Source argument should support dotted.source notation.
|
||||||
|
"""
|
||||||
user = Person.objects.create(name="django")
|
user = Person.objects.create(name="django")
|
||||||
post = BlogPost.objects.create(title="Test blog post", writer=user)
|
post = BlogPost.objects.create(title="Test blog post", writer=user)
|
||||||
post.blogpostcomment_set.create(text="I love this blog post")
|
post.blogpostcomment_set.create(text="I love this blog post")
|
||||||
|
@ -785,6 +788,24 @@ class RelatedTraversalTest(TestCase):
|
||||||
|
|
||||||
self.assertEqual(serializer.data, expected)
|
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):
|
def test_queryset_nested_traversal(self):
|
||||||
"""
|
"""
|
||||||
Relational fields should be able to use methods as their source.
|
Relational fields should be able to use methods as their source.
|
||||||
|
@ -800,7 +821,6 @@ class RelatedTraversalTest(TestCase):
|
||||||
|
|
||||||
obj = ClassWithQuerysetMethod()
|
obj = ClassWithQuerysetMethod()
|
||||||
serializer = QuerysetMethodSerializer(obj)
|
serializer = QuerysetMethodSerializer(obj)
|
||||||
self.assertEquals(serializer.data, {'blogposts': [u'BlogPost object']})
|
|
||||||
self.assertEquals(serializer.data, {'blogposts': ['BlogPost object']})
|
self.assertEquals(serializer.data, {'blogposts': ['BlogPost object']})
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user