aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
authorTom Christie2012-12-07 12:34:56 -0800
committerTom Christie2012-12-07 12:34:56 -0800
commita5178e9a363d00f3eef8d86da2d0ec687518f288 (patch)
tree1a71714f9d14f7c6c8878ffba7e85f416d2f21b1 /rest_framework/tests
parenta463ddbb37edb725626b5b819266f3962bafc160 (diff)
parent919aff329ee1bd214831095e4d96af71795ed572 (diff)
downloaddjango-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.py4
-rw-r--r--rest_framework/tests/serializer.py23
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):