mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +03:00
Tests for default arguments on fields
This commit is contained in:
parent
f8edfa2675
commit
d79e18963e
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue
Block a user