aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_validators.py
blob: a1366a1ada544b6d6572d4d3c5ce40ba2c56cc6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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'}