Commit c1e2a9cb by Tom Christie

Clean up field mapping tests

parent 3cf7ed10
...@@ -10,6 +10,10 @@ from django.test import TestCase ...@@ -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): ...@@ -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(): ...@@ -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,17 +90,29 @@ class RelationalModel(models.Model): ...@@ -78,17 +90,29 @@ 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(): def test_flat_relational_fields(self):
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = RelationalModel
expected = dedent("""
TestSerializer():
id = IntegerField(label='ID', read_only=True) id = IntegerField(label='ID', read_only=True)
foreign_key = PrimaryKeyRelatedField(queryset=ForeignKeyTargetModel.objects.all()) foreign_key = PrimaryKeyRelatedField(queryset=ForeignKeyTargetModel.objects.all())
one_to_one = PrimaryKeyRelatedField(queryset=OneToOneTargetModel.objects.all()) one_to_one = PrimaryKeyRelatedField(queryset=OneToOneTargetModel.objects.all())
many_to_many = PrimaryKeyRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all()) many_to_many = PrimaryKeyRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all())
""".strip() """)
self.assertEqual(repr(TestSerializer()), expected)
def test_nested_relational_fields(self):
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = RelationalModel
depth = 1
RELATIONAL_NESTED_REPR = """ expected = dedent("""
TestSerializer(): TestSerializer():
id = IntegerField(label='ID', read_only=True) id = IntegerField(label='ID', read_only=True)
foreign_key = NestedModelSerializer(read_only=True): foreign_key = NestedModelSerializer(read_only=True):
id = IntegerField(label='ID', read_only=True) id = IntegerField(label='ID', read_only=True)
...@@ -99,20 +123,31 @@ TestSerializer(): ...@@ -99,20 +123,31 @@ TestSerializer():
many_to_many = NestedModelSerializer(many=True, read_only=True): many_to_many = NestedModelSerializer(many=True, read_only=True):
id = IntegerField(label='ID', read_only=True) id = IntegerField(label='ID', read_only=True)
name = CharField(max_length=100) name = CharField(max_length=100)
""".strip() """)
self.assertEqual(repr(TestSerializer()), expected)
def test_flat_hyperlinked_fields(self):
class TestSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = RelationalModel
HYPERLINKED_FLAT_REPR = """ expected = dedent("""
TestSerializer(): TestSerializer():
url = HyperlinkedIdentityField(view_name='relationalmodel-detail') url = HyperlinkedIdentityField(view_name='relationalmodel-detail')
foreign_key = HyperlinkedRelatedField(queryset=ForeignKeyTargetModel.objects.all(), view_name='foreignkeytargetmodel-detail') foreign_key = HyperlinkedRelatedField(queryset=ForeignKeyTargetModel.objects.all(), view_name='foreignkeytargetmodel-detail')
one_to_one = HyperlinkedRelatedField(queryset=OneToOneTargetModel.objects.all(), view_name='onetoonetargetmodel-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') many_to_many = HyperlinkedRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all(), view_name='manytomanytargetmodel-detail')
""".strip() """)
self.assertEqual(repr(TestSerializer()), expected)
def test_nested_hyperlinked_fields(self):
class TestSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = RelationalModel
depth = 1
HYPERLINKED_NESTED_REPR = """ expected = dedent("""
TestSerializer(): TestSerializer():
url = HyperlinkedIdentityField(view_name='relationalmodel-detail') url = HyperlinkedIdentityField(view_name='relationalmodel-detail')
foreign_key = NestedModelSerializer(read_only=True): foreign_key = NestedModelSerializer(read_only=True):
id = IntegerField(label='ID', read_only=True) id = IntegerField(label='ID', read_only=True)
...@@ -123,43 +158,8 @@ TestSerializer(): ...@@ -123,43 +158,8 @@ TestSerializer():
many_to_many = NestedModelSerializer(many=True, read_only=True): many_to_many = NestedModelSerializer(many=True, read_only=True):
id = IntegerField(label='ID', read_only=True) id = IntegerField(label='ID', read_only=True)
name = CharField(max_length=100) name = CharField(max_length=100)
""".strip() """)
self.assertEqual(repr(TestSerializer()), expected)
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):
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = RelationalModel
self.assertEqual(repr(TestSerializer()), RELATIONAL_FLAT_REPR)
def test_nested_relational_fields(self):
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = RelationalModel
depth = 1
self.assertEqual(repr(TestSerializer()), RELATIONAL_NESTED_REPR)
def test_flat_hyperlinked_fields(self):
class TestSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = RelationalModel
self.assertEqual(repr(TestSerializer()), HYPERLINKED_FLAT_REPR)
def test_nested_hyperlinked_fields(self):
class TestSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = RelationalModel
depth = 1
self.assertEqual(repr(TestSerializer()), HYPERLINKED_NESTED_REPR)
# def test_flat_reverse_foreign_key(self): # def test_flat_reverse_foreign_key(self):
# class TestSerializer(serializers.ModelSerializer): # class TestSerializer(serializers.ModelSerializer):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment