mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-09 08:00:52 +03:00
Clean up field mapping tests
This commit is contained in:
parent
3cf7ed10d2
commit
c1e2a9cba6
|
@ -10,6 +10,10 @@ from django.test import TestCase
|
||||||
from rest_framework import serializers
|
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
|
# Models for testing regular field mapping
|
||||||
|
|
||||||
class RegularFieldsModel(models.Model):
|
class RegularFieldsModel(models.Model):
|
||||||
|
@ -34,8 +38,14 @@ class RegularFieldsModel(models.Model):
|
||||||
url_field = models.URLField(max_length=100)
|
url_field = models.URLField(max_length=100)
|
||||||
|
|
||||||
|
|
||||||
REGULAR_FIELDS_REPR = """
|
class TestRegularFieldMappings(TestCase):
|
||||||
TestSerializer():
|
def test_regular_fields(self):
|
||||||
|
class TestSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = RegularFieldsModel
|
||||||
|
|
||||||
|
expected = dedent("""
|
||||||
|
TestSerializer():
|
||||||
auto_field = IntegerField(read_only=True)
|
auto_field = IntegerField(read_only=True)
|
||||||
big_integer_field = IntegerField()
|
big_integer_field = IntegerField()
|
||||||
boolean_field = BooleanField(default=False)
|
boolean_field = BooleanField(default=False)
|
||||||
|
@ -55,7 +65,9 @@ TestSerializer():
|
||||||
text_field = CharField()
|
text_field = CharField()
|
||||||
time_field = TimeField()
|
time_field = TimeField()
|
||||||
url_field = URLField(max_length=100)
|
url_field = URLField(max_length=100)
|
||||||
""".strip()
|
""")
|
||||||
|
|
||||||
|
self.assertEqual(repr(TestSerializer()), expected)
|
||||||
|
|
||||||
|
|
||||||
# Model for testing relational field mapping
|
# 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')
|
one_to_one = models.OneToOneField(OneToOneTargetModel, related_name='reverse_one_to_one')
|
||||||
|
|
||||||
|
|
||||||
RELATIONAL_FLAT_REPR = """
|
class TestRelationalFieldMappings(TestCase):
|
||||||
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)
|
|
||||||
|
|
||||||
def test_flat_relational_fields(self):
|
def test_flat_relational_fields(self):
|
||||||
class TestSerializer(serializers.ModelSerializer):
|
class TestSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RelationalModel
|
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):
|
def test_nested_relational_fields(self):
|
||||||
class TestSerializer(serializers.ModelSerializer):
|
class TestSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RelationalModel
|
model = RelationalModel
|
||||||
depth = 1
|
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):
|
def test_flat_hyperlinked_fields(self):
|
||||||
class TestSerializer(serializers.HyperlinkedModelSerializer):
|
class TestSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RelationalModel
|
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):
|
def test_nested_hyperlinked_fields(self):
|
||||||
class TestSerializer(serializers.HyperlinkedModelSerializer):
|
class TestSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RelationalModel
|
model = RelationalModel
|
||||||
depth = 1
|
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):
|
# def test_flat_reverse_foreign_key(self):
|
||||||
# class TestSerializer(serializers.ModelSerializer):
|
# class TestSerializer(serializers.ModelSerializer):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user