diff options
| author | Tom Christie | 2012-10-04 09:29:12 +0100 | 
|---|---|---|
| committer | Tom Christie | 2012-10-04 09:29:12 +0100 | 
| commit | d79e18963e64c1714a29ece6ca59a8a4a1c02516 (patch) | |
| tree | 1b74317c74794a868856c8db0cf247e3e7034a8a /rest_framework/tests | |
| parent | f8edfa26759bd9922b674625cee5921c163ed40e (diff) | |
| download | django-rest-framework-d79e18963e64c1714a29ece6ca59a8a4a1c02516.tar.bz2 | |
Tests for default arguments on fields
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/models.py | 12 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 61 | 
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')  | 
