diff options
| author | Tom Christie | 2014-09-15 13:38:28 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-09-15 13:38:28 +0100 | 
| commit | c1e2a9cba6b4b69281ad47b64132bf5ac5691875 (patch) | |
| tree | e4b3df0c1a76dcd9f3a655f15424a7ff3ad7f493 /tests | |
| parent | 3cf7ed10d23300104a4613bd6cf3333fd05556ab (diff) | |
| download | django-rest-framework-c1e2a9cba6b4b69281ad47b64132bf5ac5691875.tar.bz2 | |
Clean up field mapping tests
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_model_field_mappings.py | 166 | 
1 files changed, 83 insertions, 83 deletions
diff --git a/tests/test_model_field_mappings.py b/tests/test_model_field_mappings.py index b04ad5f2..8d59e985 100644 --- a/tests/test_model_field_mappings.py +++ b/tests/test_model_field_mappings.py @@ -10,6 +10,10 @@ from django.test import TestCase  from rest_framework import serializers +def dedent(blocktext): +    return '\n'.join([line[12:] for line in blocktext.splitlines()[1:-1]]) + +  # Models for testing regular field mapping  class RegularFieldsModel(models.Model): @@ -34,28 +38,36 @@ class RegularFieldsModel(models.Model):      url_field = models.URLField(max_length=100) -REGULAR_FIELDS_REPR = """ -TestSerializer(): -    auto_field = IntegerField(read_only=True) -    big_integer_field = IntegerField() -    boolean_field = BooleanField(default=False) -    char_field = CharField(max_length=100) -    comma_seperated_integer_field = CharField(max_length=100, validators=[<django.core.validators.RegexValidator object>]) -    date_field = DateField() -    datetime_field = DateTimeField() -    decimal_field = DecimalField(decimal_places=1, max_digits=3) -    email_field = EmailField(max_length=100) -    float_field = FloatField() -    integer_field = IntegerField() -    null_boolean_field = BooleanField(required=False) -    positive_integer_field = IntegerField() -    positive_small_integer_field = IntegerField() -    slug_field = SlugField(max_length=100) -    small_integer_field = IntegerField() -    text_field = CharField() -    time_field = TimeField() -    url_field = URLField(max_length=100) -""".strip() +class TestRegularFieldMappings(TestCase): +    def test_regular_fields(self): +        class TestSerializer(serializers.ModelSerializer): +            class Meta: +                model = RegularFieldsModel + +        expected = dedent(""" +            TestSerializer(): +                auto_field = IntegerField(read_only=True) +                big_integer_field = IntegerField() +                boolean_field = BooleanField(default=False) +                char_field = CharField(max_length=100) +                comma_seperated_integer_field = CharField(max_length=100, validators=[<django.core.validators.RegexValidator object>]) +                date_field = DateField() +                datetime_field = DateTimeField() +                decimal_field = DecimalField(decimal_places=1, max_digits=3) +                email_field = EmailField(max_length=100) +                float_field = FloatField() +                integer_field = IntegerField() +                null_boolean_field = BooleanField(required=False) +                positive_integer_field = IntegerField() +                positive_small_integer_field = IntegerField() +                slug_field = SlugField(max_length=100) +                small_integer_field = IntegerField() +                text_field = CharField() +                time_field = TimeField() +                url_field = URLField(max_length=100) +        """) + +        self.assertEqual(repr(TestSerializer()), expected)  # Model for testing relational field mapping @@ -78,88 +90,76 @@ class RelationalModel(models.Model):      one_to_one = models.OneToOneField(OneToOneTargetModel, related_name='reverse_one_to_one') -RELATIONAL_FLAT_REPR = """ -TestSerializer(): -    id = IntegerField(label='ID', read_only=True) -    foreign_key = PrimaryKeyRelatedField(queryset=ForeignKeyTargetModel.objects.all()) -    one_to_one = PrimaryKeyRelatedField(queryset=OneToOneTargetModel.objects.all()) -    many_to_many = PrimaryKeyRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all()) -""".strip() - - -RELATIONAL_NESTED_REPR = """ -TestSerializer(): -    id = IntegerField(label='ID', read_only=True) -    foreign_key = NestedModelSerializer(read_only=True): -        id = IntegerField(label='ID', read_only=True) -        name = CharField(max_length=100) -    one_to_one = NestedModelSerializer(read_only=True): -        id = IntegerField(label='ID', read_only=True) -        name = CharField(max_length=100) -    many_to_many = NestedModelSerializer(many=True, read_only=True): -        id = IntegerField(label='ID', read_only=True) -        name = CharField(max_length=100) -""".strip() - - -HYPERLINKED_FLAT_REPR = """ -TestSerializer(): -    url = HyperlinkedIdentityField(view_name='relationalmodel-detail') -    foreign_key = HyperlinkedRelatedField(queryset=ForeignKeyTargetModel.objects.all(), view_name='foreignkeytargetmodel-detail') -    one_to_one = HyperlinkedRelatedField(queryset=OneToOneTargetModel.objects.all(), view_name='onetoonetargetmodel-detail') -    many_to_many = HyperlinkedRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all(), view_name='manytomanytargetmodel-detail') -""".strip() - - -HYPERLINKED_NESTED_REPR = """ -TestSerializer(): -    url = HyperlinkedIdentityField(view_name='relationalmodel-detail') -    foreign_key = NestedModelSerializer(read_only=True): -        id = IntegerField(label='ID', read_only=True) -        name = CharField(max_length=100) -    one_to_one = NestedModelSerializer(read_only=True): -        id = IntegerField(label='ID', read_only=True) -        name = CharField(max_length=100) -    many_to_many = NestedModelSerializer(many=True, read_only=True): -        id = IntegerField(label='ID', read_only=True) -        name = CharField(max_length=100) -""".strip() - - -class TestSerializerMappings(TestCase): -    maxDiff = 10000 - -    def test_regular_fields(self): -        class TestSerializer(serializers.ModelSerializer): -            class Meta: -                model = RegularFieldsModel -        self.assertEqual(repr(TestSerializer()), REGULAR_FIELDS_REPR) - +class TestRelationalFieldMappings(TestCase):      def test_flat_relational_fields(self):          class TestSerializer(serializers.ModelSerializer):              class Meta:                  model = RelationalModel -        self.assertEqual(repr(TestSerializer()), RELATIONAL_FLAT_REPR) + +        expected = dedent(""" +            TestSerializer(): +                id = IntegerField(label='ID', read_only=True) +                foreign_key = PrimaryKeyRelatedField(queryset=ForeignKeyTargetModel.objects.all()) +                one_to_one = PrimaryKeyRelatedField(queryset=OneToOneTargetModel.objects.all()) +                many_to_many = PrimaryKeyRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all()) +        """) +        self.assertEqual(repr(TestSerializer()), expected)      def test_nested_relational_fields(self):          class TestSerializer(serializers.ModelSerializer):              class Meta:                  model = RelationalModel                  depth = 1 -        self.assertEqual(repr(TestSerializer()), RELATIONAL_NESTED_REPR) + +        expected = dedent(""" +            TestSerializer(): +                id = IntegerField(label='ID', read_only=True) +                foreign_key = NestedModelSerializer(read_only=True): +                    id = IntegerField(label='ID', read_only=True) +                    name = CharField(max_length=100) +                one_to_one = NestedModelSerializer(read_only=True): +                    id = IntegerField(label='ID', read_only=True) +                    name = CharField(max_length=100) +                many_to_many = NestedModelSerializer(many=True, read_only=True): +                    id = IntegerField(label='ID', read_only=True) +                    name = CharField(max_length=100) +        """) +        self.assertEqual(repr(TestSerializer()), expected)      def test_flat_hyperlinked_fields(self):          class TestSerializer(serializers.HyperlinkedModelSerializer):              class Meta:                  model = RelationalModel -        self.assertEqual(repr(TestSerializer()), HYPERLINKED_FLAT_REPR) + +        expected = dedent(""" +            TestSerializer(): +                url = HyperlinkedIdentityField(view_name='relationalmodel-detail') +                foreign_key = HyperlinkedRelatedField(queryset=ForeignKeyTargetModel.objects.all(), view_name='foreignkeytargetmodel-detail') +                one_to_one = HyperlinkedRelatedField(queryset=OneToOneTargetModel.objects.all(), view_name='onetoonetargetmodel-detail') +                many_to_many = HyperlinkedRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all(), view_name='manytomanytargetmodel-detail') +        """) +        self.assertEqual(repr(TestSerializer()), expected)      def test_nested_hyperlinked_fields(self):          class TestSerializer(serializers.HyperlinkedModelSerializer):              class Meta:                  model = RelationalModel                  depth = 1 -        self.assertEqual(repr(TestSerializer()), HYPERLINKED_NESTED_REPR) + +        expected = dedent(""" +            TestSerializer(): +                url = HyperlinkedIdentityField(view_name='relationalmodel-detail') +                foreign_key = NestedModelSerializer(read_only=True): +                    id = IntegerField(label='ID', read_only=True) +                    name = CharField(max_length=100) +                one_to_one = NestedModelSerializer(read_only=True): +                    id = IntegerField(label='ID', read_only=True) +                    name = CharField(max_length=100) +                many_to_many = NestedModelSerializer(many=True, read_only=True): +                    id = IntegerField(label='ID', read_only=True) +                    name = CharField(max_length=100) +            """) +        self.assertEqual(repr(TestSerializer()), expected)      # def test_flat_reverse_foreign_key(self):      #     class TestSerializer(serializers.ModelSerializer):  | 
