aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_validators.py
diff options
context:
space:
mode:
authorTom Christie2014-09-29 09:24:03 +0100
committerTom Christie2014-09-29 09:24:03 +0100
commit43fd5a873051c99600386c1fdc9fa368edeb6eda (patch)
tree6242d6480b7780c8a9ab2e5c46f1a8b9d0e25676 /tests/test_validators.py
parentce04d59a53df45715c4805831406b2105c9594a8 (diff)
downloaddjango-rest-framework-43fd5a873051c99600386c1fdc9fa368edeb6eda.tar.bz2
Uniqueness validation
Diffstat (limited to 'tests/test_validators.py')
-rw-r--r--tests/test_validators.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/test_validators.py b/tests/test_validators.py
new file mode 100644
index 00000000..a1366a1a
--- /dev/null
+++ b/tests/test_validators.py
@@ -0,0 +1,35 @@
+from django.db import models
+from django.test import TestCase
+from rest_framework import serializers
+
+
+class ExampleModel(models.Model):
+ username = models.CharField(unique=True, max_length=100)
+
+
+class ExampleSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = ExampleModel
+
+
+class TestUniquenessValidation(TestCase):
+ def setUp(self):
+ self.instance = ExampleModel.objects.create(username='existing')
+
+ def test_is_not_unique(self):
+ data = {'username': 'existing'}
+ serializer = ExampleSerializer(data=data)
+ assert not serializer.is_valid()
+ assert serializer.errors == {'username': ['This field must be unique.']}
+
+ def test_is_unique(self):
+ data = {'username': 'other'}
+ serializer = ExampleSerializer(data=data)
+ assert serializer.is_valid()
+ assert serializer.validated_data == {'username': 'other'}
+
+ def test_updated_instance_excluded(self):
+ data = {'username': 'existing'}
+ serializer = ExampleSerializer(self.instance, data=data)
+ assert serializer.is_valid()
+ assert serializer.validated_data == {'username': 'existing'}