diff options
| author | Tom Christie | 2015-02-06 14:35:06 +0000 | 
|---|---|---|
| committer | Tom Christie | 2015-02-06 14:35:06 +0000 | 
| commit | 3dff9a4fe2952cf632ca7f4cd9ecf4221059ca91 (patch) | |
| tree | 0649d42b20b875e97cb551b987644b61e7860e84 /tests/test_model_serializer.py | |
| parent | c06a82d0531f4cb290baacee196829c770913eaa (diff) | |
| parent | 1f996128458570a909d13f15c3d739fb12111984 (diff) | |
| download | django-rest-framework-model-serializer-caching.tar.bz2 | |
Resolve merge conflictmodel-serializer-caching
Diffstat (limited to 'tests/test_model_serializer.py')
| -rw-r--r-- | tests/test_model_serializer.py | 54 | 
1 files changed, 42 insertions, 12 deletions
| diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 5c56c8db..bce2008a 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -5,11 +5,14 @@ shortcuts for automatically creating serializers based on a given model class.  These tests deal with ensuring that we correctly map the model fields onto  an appropriate set of serializer fields for each case.  """ +from __future__ import unicode_literals  from django.core.exceptions import ImproperlyConfigured  from django.core.validators import MaxValueValidator, MinValueValidator, MinLengthValidator  from django.db import models  from django.test import TestCase +from django.utils import six  from rest_framework import serializers +from rest_framework.compat import unicode_repr  def dedent(blocktext): @@ -119,12 +122,12 @@ class TestRegularFieldMappings(TestCase):                  positive_small_integer_field = IntegerField()                  slug_field = SlugField(max_length=100)                  small_integer_field = IntegerField() -                text_field = CharField(style={'type': 'textarea'}) +                text_field = CharField(style={'base_template': 'textarea.html'})                  time_field = TimeField()                  url_field = URLField(max_length=100)                  custom_field = ModelField(model_field=<tests.test_model_serializer.CustomField: custom_field>)          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_field_options(self):          class TestSerializer(serializers.ModelSerializer): @@ -142,7 +145,14 @@ class TestRegularFieldMappings(TestCase):                  descriptive_field = IntegerField(help_text='Some help text', label='A label')                  choices_field = ChoiceField(choices=[('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')])          """) -        self.assertEqual(repr(TestSerializer()), expected) +        if six.PY2: +            # This particular case is too awkward to resolve fully across +            # both py2 and py3. +            expected = expected.replace( +                "('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')", +                "(u'red', u'Red'), (u'blue', u'Blue'), (u'green', u'Green')" +            ) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_method_field(self):          """ @@ -206,7 +216,7 @@ class TestRegularFieldMappings(TestCase):          with self.assertRaises(ImproperlyConfigured) as excinfo:              TestSerializer().fields -        expected = 'Field name `invalid` is not valid for model `ModelBase`.' +        expected = 'Field name `invalid` is not valid for model `RegularFieldsModel`.'          assert str(excinfo.exception) == expected      def test_missing_field(self): @@ -229,6 +239,26 @@ class TestRegularFieldMappings(TestCase):          )          assert str(excinfo.exception) == expected +    def test_missing_superclass_field(self): +        """ +        Fields that have been declared on a parent of the serializer class may +        be excluded from the `Meta.fields` option. +        """ +        class TestSerializer(serializers.ModelSerializer): +            missing = serializers.ReadOnlyField() + +            class Meta: +                model = RegularFieldsModel + +        class ChildSerializer(TestSerializer): +            missing = serializers.ReadOnlyField() + +            class Meta: +                model = RegularFieldsModel +                fields = ('auto_field',) + +        ChildSerializer().fields +  # Tests for relational field mappings.  # ------------------------------------ @@ -276,7 +306,7 @@ class TestRelationalFieldMappings(TestCase):                  many_to_many = PrimaryKeyRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all())                  through = PrimaryKeyRelatedField(many=True, read_only=True)          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_nested_relations(self):          class TestSerializer(serializers.ModelSerializer): @@ -300,7 +330,7 @@ class TestRelationalFieldMappings(TestCase):                      id = IntegerField(label='ID', read_only=True)                      name = CharField(max_length=100)          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_hyperlinked_relations(self):          class TestSerializer(serializers.HyperlinkedModelSerializer): @@ -315,7 +345,7 @@ class TestRelationalFieldMappings(TestCase):                  many_to_many = HyperlinkedRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all(), view_name='manytomanytargetmodel-detail')                  through = HyperlinkedRelatedField(many=True, read_only=True, view_name='throughtargetmodel-detail')          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_nested_hyperlinked_relations(self):          class TestSerializer(serializers.HyperlinkedModelSerializer): @@ -339,7 +369,7 @@ class TestRelationalFieldMappings(TestCase):                      url = HyperlinkedIdentityField(view_name='throughtargetmodel-detail')                      name = CharField(max_length=100)          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_pk_reverse_foreign_key(self):          class TestSerializer(serializers.ModelSerializer): @@ -353,7 +383,7 @@ class TestRelationalFieldMappings(TestCase):                  name = CharField(max_length=100)                  reverse_foreign_key = PrimaryKeyRelatedField(many=True, queryset=RelationalModel.objects.all())          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_pk_reverse_one_to_one(self):          class TestSerializer(serializers.ModelSerializer): @@ -367,7 +397,7 @@ class TestRelationalFieldMappings(TestCase):                  name = CharField(max_length=100)                  reverse_one_to_one = PrimaryKeyRelatedField(queryset=RelationalModel.objects.all())          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_pk_reverse_many_to_many(self):          class TestSerializer(serializers.ModelSerializer): @@ -381,7 +411,7 @@ class TestRelationalFieldMappings(TestCase):                  name = CharField(max_length=100)                  reverse_many_to_many = PrimaryKeyRelatedField(many=True, queryset=RelationalModel.objects.all())          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)      def test_pk_reverse_through(self):          class TestSerializer(serializers.ModelSerializer): @@ -395,7 +425,7 @@ class TestRelationalFieldMappings(TestCase):                  name = CharField(max_length=100)                  reverse_through = PrimaryKeyRelatedField(many=True, read_only=True)          """) -        self.assertEqual(repr(TestSerializer()), expected) +        self.assertEqual(unicode_repr(TestSerializer()), expected)  class TestIntegration(TestCase): | 
