diff options
| author | Ravi Kotecha | 2014-03-31 11:38:26 +0100 | 
|---|---|---|
| committer | Ravi Kotecha | 2014-03-31 12:10:00 +0100 | 
| commit | 3560796bbff33917df9f8e6885328467c7f809f9 (patch) | |
| tree | 6d3e4de403181e358706edc0cfc4bea460f43a58 /rest_framework | |
| parent | 73cd4e236f0c119f5b6e0baad1259142fe37ace1 (diff) | |
| download | django-rest-framework-3560796bbff33917df9f8e6885328467c7f809f9.tar.bz2 | |
add regression tests for field Validators
pep8 and add issue no
fix formatting for python 2.6 and strings for python 3.2
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/tests/test_validation.py | 44 | 
1 files changed, 44 insertions, 0 deletions
diff --git a/rest_framework/tests/test_validation.py b/rest_framework/tests/test_validation.py index 124c874d..31549df8 100644 --- a/rest_framework/tests/test_validation.py +++ b/rest_framework/tests/test_validation.py @@ -1,4 +1,5 @@  from __future__ import unicode_literals +from django.core.validators import MaxValueValidator  from django.db import models  from django.test import TestCase  from rest_framework import generics, serializers, status @@ -102,3 +103,46 @@ class TestAvoidValidation(TestCase):          self.assertFalse(serializer.is_valid())          self.assertDictEqual(serializer.errors,                               {'non_field_errors': ['Invalid data']}) + + +# regression tests for issue: 1493 + +class ValidationMaxValueValidatorModel(models.Model): +    number_value = models.PositiveIntegerField(validators=[MaxValueValidator(100)]) + + +class ValidationMaxValueValidatorModelSerializer(serializers.ModelSerializer): +    class Meta: +        model = ValidationMaxValueValidatorModel + + +class UpdateMaxValueValidationModel(generics.RetrieveUpdateDestroyAPIView): +    model = ValidationMaxValueValidatorModel +    serializer_class = ValidationMaxValueValidatorModelSerializer + + +class TestMaxValueValidatorValidation(TestCase): + +    def test_max_value_validation_serializer_success(self): +        serializer = ValidationMaxValueValidatorModelSerializer(data={'number_value': 99}) +        self.assertTrue(serializer.is_valid()) + +    def test_max_value_validation_serializer_fails(self): +        serializer = ValidationMaxValueValidatorModelSerializer(data={'number_value': 101}) +        self.assertFalse(serializer.is_valid()) +        self.assertDictEqual({'number_value': ['Ensure this value is less than or equal to 100.']}, serializer.errors) + +    def test_max_value_validation_success(self): +        obj = ValidationMaxValueValidatorModel.objects.create(number_value=100) +        request = factory.patch('/{0}'.format(obj.pk), {'number_value': 98}, format='json') +        view = UpdateMaxValueValidationModel().as_view() +        response = view(request, pk=obj.pk).render() +        self.assertEqual(response.status_code, status.HTTP_200_OK) + +    def test_max_value_validation_fail(self): +        obj = ValidationMaxValueValidatorModel.objects.create(number_value=100) +        request = factory.patch('/{0}'.format(obj.pk), {'number_value': 101}, format='json') +        view = UpdateMaxValueValidationModel().as_view() +        response = view(request, pk=obj.pk).render() +        self.assertEqual(response.content, '{"number_value": ["Ensure this value is less than or equal to 100."]}') +        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)  | 
