diff options
Diffstat (limited to 'rest_framework/tests/test_validation.py')
| -rw-r--r-- | rest_framework/tests/test_validation.py | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/rest_framework/tests/test_validation.py b/rest_framework/tests/test_validation.py index ebfdff9c..124c874d 100644 --- a/rest_framework/tests/test_validation.py +++ b/rest_framework/tests/test_validation.py @@ -47,12 +47,18 @@ class ShouldValidateModel(models.Model):  class ShouldValidateModelSerializer(serializers.ModelSerializer):      renamed = serializers.CharField(source='should_validate_field', required=False) +    def validate_renamed(self, attrs, source): +        value = attrs[source] +        if len(value) < 3: +            raise serializers.ValidationError('Minimum 3 characters.') +        return attrs +      class Meta:          model = ShouldValidateModel          fields = ('renamed',) -class TestPreSaveValidationExclusions(TestCase): +class TestPreSaveValidationExclusionsSerializer(TestCase):      def test_renamed_fields_are_model_validated(self):          """          Ensure fields with 'source' applied do get still get model validation. @@ -61,6 +67,19 @@ class TestPreSaveValidationExclusions(TestCase):          # does not have `blank=True`, so this serializer should not validate.          serializer = ShouldValidateModelSerializer(data={'renamed': ''})          self.assertEqual(serializer.is_valid(), False) +        self.assertIn('renamed', serializer.errors) +        self.assertNotIn('should_validate_field', serializer.errors) + + +class TestCustomValidationMethods(TestCase): +    def test_custom_validation_method_is_executed(self): +        serializer = ShouldValidateModelSerializer(data={'renamed': 'fo'}) +        self.assertFalse(serializer.is_valid()) +        self.assertIn('renamed', serializer.errors) + +    def test_custom_validation_method_passing(self): +        serializer = ShouldValidateModelSerializer(data={'renamed': 'foo'}) +        self.assertTrue(serializer.is_valid())  class ValidationSerializer(serializers.Serializer): | 
