diff options
| author | Tom Christie | 2012-12-07 12:34:56 -0800 | 
|---|---|---|
| committer | Tom Christie | 2012-12-07 12:34:56 -0800 | 
| commit | a5178e9a363d00f3eef8d86da2d0ec687518f288 (patch) | |
| tree | 1a71714f9d14f7c6c8878ffba7e85f416d2f21b1 /rest_framework/tests | |
| parent | a463ddbb37edb725626b5b819266f3962bafc160 (diff) | |
| parent | 919aff329ee1bd214831095e4d96af71795ed572 (diff) | |
| download | django-rest-framework-a5178e9a363d00f3eef8d86da2d0ec687518f288.tar.bz2 | |
Merge pull request #451 from markotibold/#431
Call model's .full_clean() method, eg. to validate uniqueness
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/models.py | 4 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 23 | 
2 files changed, 22 insertions, 5 deletions
diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 76435df8..428bf130 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -61,7 +61,7 @@ class BasicModel(RESTFrameworkModel):  class SlugBasedModel(RESTFrameworkModel):      text = models.CharField(max_length=100) -    slug = models.SlugField(max_length=32) +    slug = models.SlugField(max_length=32, blank=True)  class DefaultValueModel(RESTFrameworkModel): @@ -160,7 +160,7 @@ class Photo(RESTFrameworkModel):  # Model for issue #324  class BlankFieldModel(RESTFrameworkModel): -    title = models.CharField(max_length=100, blank=True) +    title = models.CharField(max_length=100, blank=True, null=True)  # Model for issue #380 diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 6aa211f4..455fa270 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -1,7 +1,7 @@  import datetime, pickle  from django.test import TestCase  from rest_framework import serializers -from rest_framework.tests.models import (ActionItem, Anchor, BasicModel, +from rest_framework.tests.models import (Album, ActionItem, Anchor, BasicModel,      BlankFieldModel, BlogPost, Book, CallableDefaultValueModel, DefaultValueModel,      ManyToManyModel, Person, ReadOnlyManyToManyModel) @@ -48,7 +48,7 @@ class BookSerializer(serializers.ModelSerializer):  class ActionItemSerializer(serializers.ModelSerializer): -     +      class Meta:          model = ActionItem @@ -62,6 +62,12 @@ class PersonSerializer(serializers.ModelSerializer):          read_only_fields = ('age',) +class AlbumsSerializer(serializers.ModelSerializer): + +    class Meta: +        model = Album + +  class BasicTests(TestCase):      def setUp(self):          self.comment = Comment( @@ -169,7 +175,7 @@ class ValidationTests(TestCase):              'content': 'x' * 1001,              'created': datetime.datetime(2012, 1, 1)          } -        self.actionitem = ActionItem('Some to do item', +        self.actionitem = ActionItem(title='Some to do item',          )      def test_create(self): @@ -276,6 +282,17 @@ class ValidationTests(TestCase):          self.assertEquals(serializer.is_valid(), False)          self.assertEquals(serializer.errors, {'info': [u'Ensure this value has at most 12 characters (it has 13).']}) +    def test_validate_unique(self): +        """ +        Just check if serializers.ModelSerializer.perform_model_validation() handles unique checks via .full_clean() +        """ +        serializer = AlbumsSerializer(data={'title': 'a'}) +        serializer.is_valid() +        serializer.save() +        second_serializer = AlbumsSerializer(data={'title': 'a'}) +        self.assertFalse(second_serializer.is_valid()) +        self.assertEqual(second_serializer.errors,  {'title': [u'Album with this Title already exists.']}) +  class RegexValidationTest(TestCase):      def test_create_failed(self):  | 
