aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-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'}