summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2015-09-26 14:14:23 +0200
committerClaude Paroz <claude@2xlibre.net>2015-09-26 19:58:43 +0200
commit4908222ac7363de7bc4df3f3741f06a6e2ec6e41 (patch)
tree03bac90a8a2859ca856fbbbfc6ccc9dc6b760ed0
parentddd6a530e3cc3a5159d4678842efd45d652a8142 (diff)
Moved remaining of serializers_regress to serializers tests
-rw-r--r--tests/serializers/models.py310
-rw-r--r--tests/serializers/test_data.py (renamed from tests/serializers_regress/tests.py)28
-rw-r--r--tests/serializers_regress/__init__.py0
-rw-r--r--tests/serializers_regress/models.py316
4 files changed, 323 insertions, 331 deletions
diff --git a/tests/serializers/models.py b/tests/serializers/models.py
index 078fa05722..023a2e8f85 100644
--- a/tests/serializers/models.py
+++ b/tests/serializers/models.py
@@ -9,6 +9,10 @@ from __future__ import unicode_literals
from decimal import Decimal
+from django.contrib.contenttypes.fields import (
+ GenericForeignKey, GenericRelation,
+)
+from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils import six
from django.utils.encoding import python_2_unicode_compatible
@@ -198,3 +202,309 @@ class NaturalKeyAnchor(models.Model):
class FKDataNaturalKey(models.Model):
data = models.ForeignKey(NaturalKeyAnchor, models.SET_NULL, null=True)
+
+
+# ******** Models for test_data.py ***********
+# The following classes are for testing basic data marshalling, including
+# NULL values, where allowed.
+# The basic idea is to have a model for each Django data type.
+
+class BinaryData(models.Model):
+ data = models.BinaryField(null=True)
+
+
+class BooleanData(models.Model):
+ data = models.BooleanField(default=False)
+
+
+class CharData(models.Model):
+ data = models.CharField(max_length=30, null=True)
+
+
+class DateData(models.Model):
+ data = models.DateField(null=True)
+
+
+class DateTimeData(models.Model):
+ data = models.DateTimeField(null=True)
+
+
+class DecimalData(models.Model):
+ data = models.DecimalField(null=True, decimal_places=3, max_digits=5)
+
+
+class EmailData(models.Model):
+ data = models.EmailField(null=True)
+
+
+class FileData(models.Model):
+ data = models.FileField(null=True, upload_to='/foo/bar')
+
+
+class FilePathData(models.Model):
+ data = models.FilePathField(null=True)
+
+
+class FloatData(models.Model):
+ data = models.FloatField(null=True)
+
+
+class IntegerData(models.Model):
+ data = models.IntegerField(null=True)
+
+
+class BigIntegerData(models.Model):
+ data = models.BigIntegerField(null=True)
+
+# class ImageData(models.Model):
+# data = models.ImageField(null=True)
+
+
+class GenericIPAddressData(models.Model):
+ data = models.GenericIPAddressField(null=True)
+
+
+class NullBooleanData(models.Model):
+ data = models.NullBooleanField(null=True)
+
+
+class PositiveIntegerData(models.Model):
+ data = models.PositiveIntegerField(null=True)
+
+
+class PositiveSmallIntegerData(models.Model):
+ data = models.PositiveSmallIntegerField(null=True)
+
+
+class SlugData(models.Model):
+ data = models.SlugField(null=True)
+
+
+class SmallData(models.Model):
+ data = models.SmallIntegerField(null=True)
+
+
+class TextData(models.Model):
+ data = models.TextField(null=True)
+
+
+class TimeData(models.Model):
+ data = models.TimeField(null=True)
+
+
+class Tag(models.Model):
+ """A tag on an item."""
+ data = models.SlugField()
+ content_type = models.ForeignKey(ContentType, models.CASCADE)
+ object_id = models.PositiveIntegerField()
+
+ content_object = GenericForeignKey()
+
+ class Meta:
+ ordering = ["data"]
+
+
+class GenericData(models.Model):
+ data = models.CharField(max_length=30)
+
+ tags = GenericRelation(Tag)
+
+# The following test classes are all for validation
+# of related objects; in particular, forward, backward,
+# and self references.
+
+
+class Anchor(models.Model):
+ """This is a model that can be used as
+ something for other models to point at"""
+
+ data = models.CharField(max_length=30)
+
+ class Meta:
+ ordering = ('id',)
+
+
+class UniqueAnchor(models.Model):
+ """This is a model that can be used as
+ something for other models to point at"""
+
+ data = models.CharField(unique=True, max_length=30)
+
+
+class FKData(models.Model):
+ data = models.ForeignKey(Anchor, models.SET_NULL, null=True)
+
+
+class M2MData(models.Model):
+ data = models.ManyToManyField(Anchor)
+
+
+class O2OData(models.Model):
+ # One to one field can't be null here, since it is a PK.
+ data = models.OneToOneField(Anchor, models.CASCADE, primary_key=True)
+
+
+class FKSelfData(models.Model):
+ data = models.ForeignKey('self', models.CASCADE, null=True)
+
+
+class M2MSelfData(models.Model):
+ data = models.ManyToManyField('self', symmetrical=False)
+
+
+class FKDataToField(models.Model):
+ data = models.ForeignKey(UniqueAnchor, models.SET_NULL, null=True, to_field='data')
+
+
+class FKDataToO2O(models.Model):
+ data = models.ForeignKey(O2OData, models.SET_NULL, null=True)
+
+
+class M2MIntermediateData(models.Model):
+ data = models.ManyToManyField(Anchor, through='Intermediate')
+
+
+class Intermediate(models.Model):
+ left = models.ForeignKey(M2MIntermediateData, models.CASCADE)
+ right = models.ForeignKey(Anchor, models.CASCADE)
+ extra = models.CharField(max_length=30, blank=True, default="doesn't matter")
+
+# The following test classes are for validating the
+# deserialization of objects that use a user-defined
+# field as the primary key.
+# Some of these data types have been commented out
+# because they can't be used as a primary key on one
+# or all database backends.
+
+
+class BooleanPKData(models.Model):
+ data = models.BooleanField(primary_key=True, default=False)
+
+
+class CharPKData(models.Model):
+ data = models.CharField(max_length=30, primary_key=True)
+
+# class DatePKData(models.Model):
+# data = models.DateField(primary_key=True)
+
+# class DateTimePKData(models.Model):
+# data = models.DateTimeField(primary_key=True)
+
+
+class DecimalPKData(models.Model):
+ data = models.DecimalField(primary_key=True, decimal_places=3, max_digits=5)
+
+
+class EmailPKData(models.Model):
+ data = models.EmailField(primary_key=True)
+
+# class FilePKData(models.Model):
+# data = models.FileField(primary_key=True, upload_to='/foo/bar')
+
+
+class FilePathPKData(models.Model):
+ data = models.FilePathField(primary_key=True)
+
+
+class FloatPKData(models.Model):
+ data = models.FloatField(primary_key=True)
+
+
+class IntegerPKData(models.Model):
+ data = models.IntegerField(primary_key=True)
+
+# class ImagePKData(models.Model):
+# data = models.ImageField(primary_key=True)
+
+
+class GenericIPAddressPKData(models.Model):
+ data = models.GenericIPAddressField(primary_key=True)
+
+# This is just a Boolean field with null=True, and we can't test a PK value of NULL.
+# class NullBooleanPKData(models.Model):
+# data = models.NullBooleanField(primary_key=True)
+
+
+class PositiveIntegerPKData(models.Model):
+ data = models.PositiveIntegerField(primary_key=True)
+
+
+class PositiveSmallIntegerPKData(models.Model):
+ data = models.PositiveSmallIntegerField(primary_key=True)
+
+
+class SlugPKData(models.Model):
+ data = models.SlugField(primary_key=True)
+
+
+class SmallPKData(models.Model):
+ data = models.SmallIntegerField(primary_key=True)
+
+# class TextPKData(models.Model):
+# data = models.TextField(primary_key=True)
+
+# class TimePKData(models.Model):
+# data = models.TimeField(primary_key=True)
+
+
+class UUIDData(models.Model):
+ data = models.UUIDField(primary_key=True)
+
+
+class FKToUUID(models.Model):
+ data = models.ForeignKey(UUIDData, models.CASCADE)
+
+
+# Tests for handling fields with pre_save functions, or
+# models with save functions that modify data
+
+
+class AutoNowDateTimeData(models.Model):
+ data = models.DateTimeField(null=True, auto_now=True)
+
+
+class ModifyingSaveData(models.Model):
+ data = models.IntegerField(null=True)
+
+ def save(self, *args, **kwargs):
+ """
+ A save method that modifies the data in the object.
+ Verifies that a user-defined save() method isn't called when objects
+ are deserialized (#4459).
+ """
+ self.data = 666
+ super(ModifyingSaveData, self).save(*args, **kwargs)
+
+# Tests for serialization of models using inheritance.
+# Regression for #7202, #7350
+
+
+class AbstractBaseModel(models.Model):
+ parent_data = models.IntegerField()
+
+ class Meta:
+ abstract = True
+
+
+class InheritAbstractModel(AbstractBaseModel):
+ child_data = models.IntegerField()
+
+
+class BaseModel(models.Model):
+ parent_data = models.IntegerField()
+
+
+class InheritBaseModel(BaseModel):
+ child_data = models.IntegerField()
+
+
+class ExplicitInheritBaseModel(BaseModel):
+ parent = models.OneToOneField(BaseModel, models.CASCADE)
+ child_data = models.IntegerField()
+
+
+class LengthModel(models.Model):
+ data = models.IntegerField()
+
+ def __len__(self):
+ return self.data
diff --git a/tests/serializers_regress/tests.py b/tests/serializers/test_data.py
index 053e952e15..5f0cd45643 100644
--- a/tests/serializers_regress/tests.py
+++ b/tests/serializers/test_data.py
@@ -14,25 +14,24 @@ import uuid
from django.core import serializers
from django.db import connection, models
-from django.http import HttpResponse
from django.test import TestCase
from django.utils import six
-from django.utils.functional import curry
from .models import (
- Anchor, AutoNowDateTimeData, BigIntegerData, BinaryData,
- BooleanData, BooleanPKData, CharData, CharPKData, DateData,
- DateTimeData, DecimalData, DecimalPKData, EmailData, EmailPKData,
- ExplicitInheritBaseModel, FileData, FilePathData, FilePathPKData, FKData,
- FKDataToField, FKDataToO2O, FKSelfData, FKToUUID,
- FloatData, FloatPKData, GenericData, GenericIPAddressData,
- GenericIPAddressPKData, InheritAbstractModel, InheritBaseModel,
- IntegerData, IntegerPKData, Intermediate, LengthModel, M2MData,
- M2MIntermediateData, M2MSelfData, ModifyingSaveData,
+ Anchor, AutoNowDateTimeData, BigIntegerData, BinaryData, BooleanData,
+ BooleanPKData, CharData, CharPKData, DateData, DateTimeData, DecimalData,
+ DecimalPKData, EmailData, EmailPKData, ExplicitInheritBaseModel, FileData,
+ FilePathData, FilePathPKData, FKData, FKDataToField, FKDataToO2O,
+ FKSelfData, FKToUUID, FloatData, FloatPKData, GenericData,
+ GenericIPAddressData, GenericIPAddressPKData, InheritAbstractModel,
+ InheritBaseModel, IntegerData, IntegerPKData, Intermediate, LengthModel,
+ M2MData, M2MIntermediateData, M2MSelfData, ModifyingSaveData,
NullBooleanData, O2OData, PositiveIntegerData, PositiveIntegerPKData,
PositiveSmallIntegerData, PositiveSmallIntegerPKData, SlugData, SlugPKData,
SmallData, SmallPKData, Tag, TextData, TimeData, UniqueAnchor, UUIDData,
)
+from .tests import register_tests
+
# A set of functions that can be used to recreate
# test data objects of various kinds.
@@ -385,9 +384,10 @@ if connection.features.allows_auto_pk_0:
])
-class SerializerTests(TestCase):
+class SerializerDataTests(TestCase):
pass
+
def serializerTest(format, self):
# Create all the objects defined in the test data
@@ -421,6 +421,4 @@ def serializerTest(format, self):
self.assertEqual(count, klass.objects.count())
-for format in [f for f in serializers.get_serializer_formats()
- if not isinstance(serializers.get_serializer(f), serializers.BadSerializer) and not f == 'geojson']:
- setattr(SerializerTests, 'test_' + format + '_serializer', curry(serializerTest, format))
+register_tests(SerializerDataTests, 'test_%s_serializer', serializerTest)
diff --git a/tests/serializers_regress/__init__.py b/tests/serializers_regress/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/serializers_regress/__init__.py
+++ /dev/null
diff --git a/tests/serializers_regress/models.py b/tests/serializers_regress/models.py
deleted file mode 100644
index fb8aa9f411..0000000000
--- a/tests/serializers_regress/models.py
+++ /dev/null
@@ -1,316 +0,0 @@
-"""
-A test spanning all the capabilities of all the serializers.
-
-This class sets up a model for each model field type
-(except for image types, because of the Pillow dependency).
-"""
-from django.contrib.contenttypes.fields import (
- GenericForeignKey, GenericRelation,
-)
-from django.contrib.contenttypes.models import ContentType
-from django.db import models
-
-
-# The following classes are for testing basic data
-# marshalling, including NULL values, where allowed.
-
-
-class BinaryData(models.Model):
- data = models.BinaryField(null=True)
-
-
-class BooleanData(models.Model):
- data = models.BooleanField(default=False)
-
-
-class CharData(models.Model):
- data = models.CharField(max_length=30, null=True)
-
-
-class DateData(models.Model):
- data = models.DateField(null=True)
-
-
-class DateTimeData(models.Model):
- data = models.DateTimeField(null=True)
-
-
-class DecimalData(models.Model):
- data = models.DecimalField(null=True, decimal_places=3, max_digits=5)
-
-
-class EmailData(models.Model):
- data = models.EmailField(null=True)
-
-
-class FileData(models.Model):
- data = models.FileField(null=True, upload_to='/foo/bar')
-
-
-class FilePathData(models.Model):
- data = models.FilePathField(null=True)
-
-
-class FloatData(models.Model):
- data = models.FloatField(null=True)
-
-
-class IntegerData(models.Model):
- data = models.IntegerField(null=True)
-
-
-class BigIntegerData(models.Model):
- data = models.BigIntegerField(null=True)
-
-# class ImageData(models.Model):
-# data = models.ImageField(null=True)
-
-
-class GenericIPAddressData(models.Model):
- data = models.GenericIPAddressField(null=True)
-
-
-class NullBooleanData(models.Model):
- data = models.NullBooleanField(null=True)
-
-
-class PositiveIntegerData(models.Model):
- data = models.PositiveIntegerField(null=True)
-
-
-class PositiveSmallIntegerData(models.Model):
- data = models.PositiveSmallIntegerField(null=True)
-
-
-class SlugData(models.Model):
- data = models.SlugField(null=True)
-
-
-class SmallData(models.Model):
- data = models.SmallIntegerField(null=True)
-
-
-class TextData(models.Model):
- data = models.TextField(null=True)
-
-
-class TimeData(models.Model):
- data = models.TimeField(null=True)
-
-
-class Tag(models.Model):
- """A tag on an item."""
- data = models.SlugField()
- content_type = models.ForeignKey(ContentType, models.CASCADE)
- object_id = models.PositiveIntegerField()
-
- content_object = GenericForeignKey()
-
- class Meta:
- ordering = ["data"]
-
-
-class GenericData(models.Model):
- data = models.CharField(max_length=30)
-
- tags = GenericRelation(Tag)
-
-# The following test classes are all for validation
-# of related objects; in particular, forward, backward,
-# and self references.
-
-
-class Anchor(models.Model):
- """This is a model that can be used as
- something for other models to point at"""
-
- data = models.CharField(max_length=30)
-
- class Meta:
- ordering = ('id',)
-
-
-class UniqueAnchor(models.Model):
- """This is a model that can be used as
- something for other models to point at"""
-
- data = models.CharField(unique=True, max_length=30)
-
-
-class FKData(models.Model):
- data = models.ForeignKey(Anchor, models.SET_NULL, null=True)
-
-
-class M2MData(models.Model):
- data = models.ManyToManyField(Anchor)
-
-
-class O2OData(models.Model):
- # One to one field can't be null here, since it is a PK.
- data = models.OneToOneField(Anchor, models.CASCADE, primary_key=True)
-
-
-class FKSelfData(models.Model):
- data = models.ForeignKey('self', models.CASCADE, null=True)
-
-
-class M2MSelfData(models.Model):
- data = models.ManyToManyField('self', symmetrical=False)
-
-
-class FKDataToField(models.Model):
- data = models.ForeignKey(UniqueAnchor, models.SET_NULL, null=True, to_field='data')
-
-
-class FKDataToO2O(models.Model):
- data = models.ForeignKey(O2OData, models.SET_NULL, null=True)
-
-
-class M2MIntermediateData(models.Model):
- data = models.ManyToManyField(Anchor, through='Intermediate')
-
-
-class Intermediate(models.Model):
- left = models.ForeignKey(M2MIntermediateData, models.CASCADE)
- right = models.ForeignKey(Anchor, models.CASCADE)
- extra = models.CharField(max_length=30, blank=True, default="doesn't matter")
-
-# The following test classes are for validating the
-# deserialization of objects that use a user-defined
-# field as the primary key.
-# Some of these data types have been commented out
-# because they can't be used as a primary key on one
-# or all database backends.
-
-
-class BooleanPKData(models.Model):
- data = models.BooleanField(primary_key=True, default=False)
-
-
-class CharPKData(models.Model):
- data = models.CharField(max_length=30, primary_key=True)
-
-# class DatePKData(models.Model):
-# data = models.DateField(primary_key=True)
-
-# class DateTimePKData(models.Model):
-# data = models.DateTimeField(primary_key=True)
-
-
-class DecimalPKData(models.Model):
- data = models.DecimalField(primary_key=True, decimal_places=3, max_digits=5)
-
-
-class EmailPKData(models.Model):
- data = models.EmailField(primary_key=True)
-
-# class FilePKData(models.Model):
-# data = models.FileField(primary_key=True, upload_to='/foo/bar')
-
-
-class FilePathPKData(models.Model):
- data = models.FilePathField(primary_key=True)
-
-
-class FloatPKData(models.Model):
- data = models.FloatField(primary_key=True)
-
-
-class IntegerPKData(models.Model):
- data = models.IntegerField(primary_key=True)
-
-# class ImagePKData(models.Model):
-# data = models.ImageField(primary_key=True)
-
-
-class GenericIPAddressPKData(models.Model):
- data = models.GenericIPAddressField(primary_key=True)
-
-# This is just a Boolean field with null=True, and we can't test a PK value of NULL.
-# class NullBooleanPKData(models.Model):
-# data = models.NullBooleanField(primary_key=True)
-
-
-class PositiveIntegerPKData(models.Model):
- data = models.PositiveIntegerField(primary_key=True)
-
-
-class PositiveSmallIntegerPKData(models.Model):
- data = models.PositiveSmallIntegerField(primary_key=True)
-
-
-class SlugPKData(models.Model):
- data = models.SlugField(primary_key=True)
-
-
-class SmallPKData(models.Model):
- data = models.SmallIntegerField(primary_key=True)
-
-# class TextPKData(models.Model):
-# data = models.TextField(primary_key=True)
-
-# class TimePKData(models.Model):
-# data = models.TimeField(primary_key=True)
-
-
-class UUIDData(models.Model):
- data = models.UUIDField(primary_key=True)
-
-
-class FKToUUID(models.Model):
- data = models.ForeignKey(UUIDData, models.CASCADE)
-
-
-# Tests for handling fields with pre_save functions, or
-# models with save functions that modify data
-
-
-class AutoNowDateTimeData(models.Model):
- data = models.DateTimeField(null=True, auto_now=True)
-
-
-class ModifyingSaveData(models.Model):
- data = models.IntegerField(null=True)
-
- def save(self, *args, **kwargs):
- """
- A save method that modifies the data in the object.
- Verifies that a user-defined save() method isn't called when objects
- are deserialized (#4459).
- """
- self.data = 666
- super(ModifyingSaveData, self).save(*args, **kwargs)
-
-# Tests for serialization of models using inheritance.
-# Regression for #7202, #7350
-
-
-class AbstractBaseModel(models.Model):
- parent_data = models.IntegerField()
-
- class Meta:
- abstract = True
-
-
-class InheritAbstractModel(AbstractBaseModel):
- child_data = models.IntegerField()
-
-
-class BaseModel(models.Model):
- parent_data = models.IntegerField()
-
-
-class InheritBaseModel(BaseModel):
- child_data = models.IntegerField()
-
-
-class ExplicitInheritBaseModel(BaseModel):
- parent = models.OneToOneField(BaseModel, models.CASCADE)
- child_data = models.IntegerField()
-
-
-class LengthModel(models.Model):
- data = models.IntegerField()
-
- def __len__(self):
- return self.data