diff options
| author | Tom Christie | 2012-11-20 01:50:39 -0800 |
|---|---|---|
| committer | Tom Christie | 2012-11-20 01:50:39 -0800 |
| commit | d22daa04e654f0d5410fa610bc5865b5b29b758f (patch) | |
| tree | 26d726be5b4e6cbe31b66605a6fdab254704a05a /rest_framework/tests | |
| parent | a44a94dd6ea2d9497264e267a0354cb684d398f6 (diff) | |
| parent | 3cc5349b2f98d9c70788a2aadefc150290316479 (diff) | |
| download | django-rest-framework-d22daa04e654f0d5410fa610bc5865b5b29b758f.tar.bz2 | |
Merge pull request #435 from j4mie/fix-serializer-source
Fix related serializers with source argument that resolves to a callable
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/models.py | 3 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 33 |
2 files changed, 27 insertions, 9 deletions
diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 59d81150..3704cda7 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -127,6 +127,9 @@ class ActionItem(RESTFrameworkModel): class BlogPost(RESTFrameworkModel): title = models.CharField(max_length=100) + def get_first_comment(self): + return self.blogpostcomment_set.all()[0] + class BlogPostComment(RESTFrameworkModel): text = models.TextField() diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 814c2499..d522ef97 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -479,7 +479,10 @@ class CallableDefaultValueTests(TestCase): class ManyRelatedTests(TestCase): - def setUp(self): + def test_reverse_relations(self): + post = BlogPost.objects.create(title="Test blog post") + post.blogpostcomment_set.create(text="I hate this blog post") + post.blogpostcomment_set.create(text="I love this blog post") class BlogPostCommentSerializer(serializers.Serializer): text = serializers.CharField() @@ -488,14 +491,7 @@ class ManyRelatedTests(TestCase): title = serializers.CharField() comments = BlogPostCommentSerializer(source='blogpostcomment_set') - self.serializer_class = BlogPostSerializer - - def test_reverse_relations(self): - post = BlogPost.objects.create(title="Test blog post") - post.blogpostcomment_set.create(text="I hate this blog post") - post.blogpostcomment_set.create(text="I love this blog post") - - serializer = self.serializer_class(instance=post) + serializer = BlogPostSerializer(instance=post) expected = { 'title': 'Test blog post', 'comments': [ @@ -506,6 +502,25 @@ class ManyRelatedTests(TestCase): self.assertEqual(serializer.data, expected) + def test_callable_source(self): + post = BlogPost.objects.create(title="Test blog post") + post.blogpostcomment_set.create(text="I love this blog post") + + class BlogPostCommentSerializer(serializers.Serializer): + text = serializers.CharField() + + class BlogPostSerializer(serializers.Serializer): + title = serializers.CharField() + first_comment = BlogPostCommentSerializer(source='get_first_comment') + + serializer = BlogPostSerializer(post) + + expected = { + 'title': 'Test blog post', + 'first_comment': {'text': 'I love this blog post'} + } + self.assertEqual(serializer.data, expected) + # Test for issue #324 class BlankFieldTests(TestCase): |
