diff options
| author | Pablo Recio | 2013-05-18 15:01:58 +0200 | 
|---|---|---|
| committer | Pablo Recio | 2013-05-18 15:01:58 +0200 | 
| commit | 392c8556aed41df2120623fe1c891610bb111100 (patch) | |
| tree | 44158ef02a3a417fbc5a3400728da936fd76428b /rest_framework/tests/serializer.py | |
| parent | a0e3c44c99a61a6dc878308bdf0890fbb10c41e4 (diff) | |
| download | django-rest-framework-392c8556aed41df2120623fe1c891610bb111100.tar.bz2 | |
Display an empty label into related fields if it isn't required
Diffstat (limited to 'rest_framework/tests/serializer.py')
| -rw-r--r-- | rest_framework/tests/serializer.py | 57 | 
1 files changed, 57 insertions, 0 deletions
| diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index d0a8570c..69b33209 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -1117,6 +1117,63 @@ class SerializerChoiceFields(TestCase):          ) +# Regression tests for #675 +class Ticket(models.Model): +    assigned = models.ForeignKey( +        Person, related_name='assigned_tickets') +    reviewer = models.ForeignKey( +        Person, blank=True, null=True, related_name='reviewed_tickets') + + +class SerializerRelatedChoicesTest(TestCase): + +    def setUp(self): +        super(SerializerRelatedChoicesTest, self).setUp() + +        class RelatedChoicesSerializer(serializers.ModelSerializer): +            class Meta: +                model = Ticket +                fields = ('assigned', 'reviewer') + +        self.related_fields_serializer = RelatedChoicesSerializer + +    def test_empty_queryset_required(self): +        serializer = self.related_fields_serializer() +        self.assertEqual(serializer.fields['assigned'].queryset.count(), 0) +        self.assertEqual( +            [x for x in serializer.fields['assigned'].widget.choices], +            [] +        ) + +    def test_empty_queryset_not_required(self): +        serializer = self.related_fields_serializer() +        self.assertEqual(serializer.fields['reviewer'].queryset.count(), 0) +        self.assertEqual( +            [x for x in serializer.fields['reviewer'].widget.choices], +            [(u'', u'---------')] +        ) + +    def test_with_some_persons_required(self): +        Person.objects.create(name="Lionel Messi") +        Person.objects.create(name="Xavi Hernandez") +        serializer = self.related_fields_serializer() +        self.assertEqual(serializer.fields['assigned'].queryset.count(), 2) +        self.assertEqual( +            [x for x in serializer.fields['assigned'].widget.choices], +            [(1, u'Person object - 1'), (2, u'Person object - 2')] +        ) + +    def test_with_some_persons_not_required(self): +        Person.objects.create(name="Lionel Messi") +        Person.objects.create(name="Xavi Hernandez") +        serializer = self.related_fields_serializer() +        self.assertEqual(serializer.fields['reviewer'].queryset.count(), 2) +        self.assertEqual( +            [x for x in serializer.fields['reviewer'].widget.choices], +            [(u'', u'---------'), (1, u'Person object - 1'), (2, u'Person object - 2')] +        ) + +  class DepthTest(TestCase):      def test_implicit_nesting(self): | 
