mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 12:30:11 +03:00
WIP Add failing tests for more fields
This commit is contained in:
parent
69ccc66133
commit
31eba20301
|
@ -1,7 +1,7 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from django.core.validators import MinValueValidator, MaxValueValidator
|
from django.core.validators import MinValueValidator, MaxValueValidator, URLValidator, EmailValidator, MinLengthValidator, MaxLengthValidator
|
||||||
from django.db import DataError, models
|
from django.db import DataError, models
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
|
@ -591,3 +591,63 @@ class ValidatorMessageTests(TestCase):
|
||||||
s.is_valid()
|
s.is_valid()
|
||||||
|
|
||||||
assert s.errors['price'] == ['Price has to be <= 10.']
|
assert s.errors['price'] == ['Price has to be <= 10.']
|
||||||
|
|
||||||
|
def test_url_validator_message_is_copied_from_model(self):
|
||||||
|
class BlogModel(models.Model):
|
||||||
|
url = models.URLField(validators=[URLValidator(message='This URL is not valid.')])
|
||||||
|
|
||||||
|
class BlogSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = BlogModel
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
data = {'url': 'broken url'}
|
||||||
|
s = BlogSerializer(data=data)
|
||||||
|
s.is_valid()
|
||||||
|
|
||||||
|
assert s.errors['url'] == ['This URL is not valid.']
|
||||||
|
|
||||||
|
def test_email_validator_message_is_copied_from_model(self):
|
||||||
|
class UserModel(models.Model):
|
||||||
|
email = models.EmailField(validators=[EmailValidator(message='Please enter a valid email.')])
|
||||||
|
|
||||||
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = UserModel
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
data = {'email': 'invalid email'}
|
||||||
|
s = UserSerializer(data=data)
|
||||||
|
s.is_valid()
|
||||||
|
|
||||||
|
assert s.errors['email'] == ['Please enter a valid email.']
|
||||||
|
|
||||||
|
def test_min_length_validator_message_is_copied_from_model(self):
|
||||||
|
class Review(models.Model):
|
||||||
|
text = models.CharField(max_length=100, validators=[MinLengthValidator(limit_value=5, message='This is too short.')])
|
||||||
|
|
||||||
|
class ReviewSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Review
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
data = {'text': 'Hi'}
|
||||||
|
s = ReviewSerializer(data=data)
|
||||||
|
s.is_valid()
|
||||||
|
|
||||||
|
assert s.errors['text'] == ['This is too short.']
|
||||||
|
|
||||||
|
def test_max_length_validator_message_is_copied_from_model(self):
|
||||||
|
# Added this test because was expecting is_valid() to be false but it is not.
|
||||||
|
# Will investigate further
|
||||||
|
class Post(models.Model):
|
||||||
|
text = models.CharField(max_length=100, validators=[MaxLengthValidator(limit_value=1, message='This is too long.')])
|
||||||
|
|
||||||
|
class PostSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Post
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
data = {'text': 'A very long text'}
|
||||||
|
s = PostSerializer(data=data)
|
||||||
|
assert not s.is_valid()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user