aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/tests/models.py31
-rw-r--r--rest_framework/tests/serializer.py61
2 files changed, 75 insertions, 17 deletions
diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py
index c90668ca..969c8297 100644
--- a/rest_framework/tests/models.py
+++ b/rest_framework/tests/models.py
@@ -28,25 +28,34 @@ from django.db import models
# 'pk': self.id
# })
-class Anchor(models.Model):
+def foobar():
+ return 'foobar'
+
+
+class RESTFrameworkModel(models.Model):
"""
- A simple model to use as the target of relationships for other test models.
+ Base for test models that sets app_label, so they play nicely.
"""
- text = models.CharField(max_length=100, default='anchor')
-
class Meta:
app_label = 'rest_framework'
+ abstract = True
-class BasicModel(models.Model):
+class Anchor(RESTFrameworkModel):
+ text = models.CharField(max_length=100, default='anchor')
+
+
+class BasicModel(RESTFrameworkModel):
text = models.CharField(max_length=100)
- class Meta:
- app_label = 'rest_framework'
+class DefaultValueModel(RESTFrameworkModel):
+ text = models.CharField(default='foobar', max_length=100)
-class ManyToManyModel(models.Model):
- rel = models.ManyToManyField(Anchor)
- class Meta:
- app_label = 'rest_framework'
+class CallableDefaultValueModel(RESTFrameworkModel):
+ text = models.CharField(default=foobar, max_length=100)
+
+
+class ManyToManyModel(RESTFrameworkModel):
+ rel = models.ManyToManyField(Anchor)
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index db342c9e..08a7a9d0 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -202,9 +202,58 @@ class ManyToManyTests(TestCase):
self.assertEquals(instance.pk, 2)
self.assertEquals(list(instance.rel.all()), [])
- # def test_deserialization_for_update(self):
- # serializer = self.serializer_class(self.data, instance=self.instance)
- # expected = self.instance
- # self.assertEquals(serializer.is_valid(), True)
- # self.assertEquals(serializer.object, expected)
- # self.assertTrue(serializer.object is expected)
+
+class DefaultValueTests(TestCase):
+ def setUp(self):
+ class DefaultValueSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = DefaultValueModel
+
+ self.serializer_class = DefaultValueSerializer
+ self.objects = DefaultValueModel.objects
+
+ def test_create_using_default(self):
+ data = {}
+ serializer = self.serializer_class(data)
+ self.assertEquals(serializer.is_valid(), True)
+ instance = serializer.save()
+ self.assertEquals(len(self.objects.all()), 1)
+ self.assertEquals(instance.pk, 1)
+ self.assertEquals(instance.text, 'foobar')
+
+ def test_create_overriding_default(self):
+ data = {'text': 'overridden'}
+ serializer = self.serializer_class(data)
+ self.assertEquals(serializer.is_valid(), True)
+ instance = serializer.save()
+ self.assertEquals(len(self.objects.all()), 1)
+ self.assertEquals(instance.pk, 1)
+ self.assertEquals(instance.text, 'overridden')
+
+
+class CallableDefaultValueTests(TestCase):
+ def setUp(self):
+ class CallableDefaultValueSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = CallableDefaultValueModel
+
+ self.serializer_class = CallableDefaultValueSerializer
+ self.objects = CallableDefaultValueModel.objects
+
+ def test_create_using_default(self):
+ data = {}
+ serializer = self.serializer_class(data)
+ self.assertEquals(serializer.is_valid(), True)
+ instance = serializer.save()
+ self.assertEquals(len(self.objects.all()), 1)
+ self.assertEquals(instance.pk, 1)
+ self.assertEquals(instance.text, 'foobar')
+
+ def test_create_overriding_default(self):
+ data = {'text': 'overridden'}
+ serializer = self.serializer_class(data)
+ self.assertEquals(serializer.is_valid(), True)
+ instance = serializer.save()
+ self.assertEquals(len(self.objects.all()), 1)
+ self.assertEquals(instance.pk, 1)
+ self.assertEquals(instance.text, 'overridden')