aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
authorTom Christie2012-10-04 09:29:12 +0100
committerTom Christie2012-10-04 09:29:12 +0100
commitd79e18963e64c1714a29ece6ca59a8a4a1c02516 (patch)
tree1b74317c74794a868856c8db0cf247e3e7034a8a /rest_framework
parentf8edfa26759bd9922b674625cee5921c163ed40e (diff)
downloaddjango-rest-framework-d79e18963e64c1714a29ece6ca59a8a4a1c02516.tar.bz2
Tests for default arguments on fields
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/tests/models.py12
-rw-r--r--rest_framework/tests/serializer.py61
2 files changed, 67 insertions, 6 deletions
diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py
index 6cc2c311..969c8297 100644
--- a/rest_framework/tests/models.py
+++ b/rest_framework/tests/models.py
@@ -28,6 +28,10 @@ from django.db import models
# 'pk': self.id
# })
+def foobar():
+ return 'foobar'
+
+
class RESTFrameworkModel(models.Model):
"""
Base for test models that sets app_label, so they play nicely.
@@ -45,5 +49,13 @@ class BasicModel(RESTFrameworkModel):
text = models.CharField(max_length=100)
+class DefaultValueModel(RESTFrameworkModel):
+ text = models.CharField(default='foobar', max_length=100)
+
+
+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')