Пример #1
0
def test_first_list_in_dict():
    e = ValidationError(OrderedDict([
        ('foo', ['error @ foo.0', 'error @ foo.1', 'error @ foo.2']),
        ('bar', 'error @ bar'),
        ('baz', 'error @ baz')
    ]))
    assert e.first() == (('foo',), 'error @ foo.0')
Пример #2
0
def test_first_dict():
    e = ValidationError(OrderedDict([
        ('foo', 'error @ foo'),
        ('bar', 'error @ bar'),
        ('baz', 'error @ baz')
    ]))
    assert e.first() == (('foo',), 'error @ foo')
Пример #3
0
def test_first_nested_dict():
    e = ValidationError(
        OrderedDict([('foo',
                      OrderedDict([
                          ('hello', 'error @ foo.hello'),
                          ('world', 'error @ foo.world'),
                      ])), ('bar', 'error @ bar'), ('baz', 'error @ baz')]))
    assert e.first() == (('foo', 'hello'), 'error @ foo.hello')
Пример #4
0
def test_first_dict_in_list():
    e = ValidationError([
        OrderedDict([('foo', 'error @ 0.foo'), ('bar', 'error @ 0.bar'),
                     ('baz', 'error @ 0.baz')]),
        OrderedDict([('foo', 'error @ 1.foo'), ('bar', 'error @ 1.bar'),
                     ('baz', 'error @ 1.baz')])
    ])
    assert e.first() == (('foo', ), 'error @ 0.foo')
Пример #5
0
def test_first_nested_dict():
    e = ValidationError(OrderedDict([
        ('foo', OrderedDict([
            ('hello', 'error @ foo.hello'),
            ('world', 'error @ foo.world'),
        ])),
        ('bar', 'error @ bar'),
        ('baz', 'error @ baz')
    ]))
    assert e.first() == (('foo', 'hello'), 'error @ foo.hello')
Пример #6
0
def test_first_dict_in_list():
    e = ValidationError([
        OrderedDict([
            ('foo', 'error @ 0.foo'),
            ('bar', 'error @ 0.bar'),
            ('baz', 'error @ 0.baz')
        ]),
        OrderedDict([
            ('foo', 'error @ 1.foo'),
            ('bar', 'error @ 1.bar'),
            ('baz', 'error @ 1.baz')
        ])
    ])
    assert e.first() == (('foo',), 'error @ 0.foo')
Пример #7
0
    def to_internal_value(self, data):
        if not isinstance(data, dict):
            self.fail('not_a_dict')

        errors = {}
        pre_value = {}

        for field in self.writable_fields:
            pre_value[field.source] = field.get_value(data)

        pre_value = self.pre_validate(pre_value)
        value = {}

        for field in self.writable_fields:
            field_value = pre_value[field.source]
            validate_method = getattr(self, 'validate_' + field.field_name,
                                      None)

            try:
                field_value = field.run_validation(field_value)

                if validate_method is not None:
                    field_value = validate_method(field_value)
            except ValidationError as e:
                errors[field.field_name] = e.errors
            else:
                value[field.source] = field_value

        if errors:
            raise ValidationError(errors)

        return value
Пример #8
0
def test_normalise_list_complex():
    errors = [{
        'foo': ['1', '2', '3'],
        'bar': '4',
    }, ['foo', 'bar', 'baz'], 'foo']

    e = ValidationError(errors)

    assert e.errors == [{
        'foo': ['1', '2', '3'],
        'bar': ['4'],
    }, ['foo', 'bar', 'baz'], 'foo']
Пример #9
0
    def run_validators_on_field(self, data, field_name, validators):
        field = self.fields[field_name]
        value = field.get_attribute(data)

        try:
            for validator in validators:
                if hasattr(validator, 'set_context'):
                    validator.set_context(self)

                value = validator(value)
        except ValidationError as e:
            raise ValidationError({field.field_name: e.errors})

        data[field.source] = value
Пример #10
0
    def run_validators_on_serializer(self, data, validators):
        try:
            for validator in validators:
                if hasattr(validator, 'set_context'):
                    validator.set_context(self)

                data = validator(data)
        except ValidationError as e:
            if isinstance(e.errors, dict):
                raise
            else:
                raise ValidationError({'_': e.errors})

        return data
Пример #11
0
    def run_validation(self, data):
        data = self.validate_empty_values(data)

        if data is None:
            return data

        value = self.to_internal_value(data)

        try:
            value = self.run_validators(value)
            value = self.validate(value)
        except ValidationError as e:
            if isinstance(e.errors, dict):
                raise
            else:
                raise ValidationError({'_': e.errors})

        return value
Пример #12
0
    def is_valid(self, raise_exception=False):
        if self.partial:
            data = self.get_partial()
        else:
            data = self.initial_data

        try:
            self.validated_data = self.run_validation(data)
        except ValidationError as e:
            self.validated_data = {}
            self.errors = e.errors
        else:
            self.errors = {}

        if self.errors and raise_exception:
            raise ValidationError(self.errors)

        return not bool(self.errors)
Пример #13
0
    def to_internal_value(self, data):
        if not isinstance(data, list):
            self.fail('not_a_list')

        values = []
        errors = {}

        for i, x in enumerate(data):
            try:
                value = self.child.run_validation(x)
            except ValidationError as e:
                errors[i] = e.errors
            else:
                values.append(value)

        if errors:
            raise ValidationError(errors)

        return values
Пример #14
0
def test_normalise_dict_complex():
    errors = {
        'foo': [{
            'foo': '1',
            'bar': '2',
        }],
        'bar': '1',
        'baz': ['1', '2', '3'],
    }

    e = ValidationError(errors)

    assert e.errors == {
        'foo': [{
            'foo': ['1'],
            'bar': ['2'],
        }],
        'bar': ['1'],
        'baz': ['1', '2', '3'],
    }
Пример #15
0
def test_normalise_empty_list():
    e = ValidationError([])
    assert e.errors == []
Пример #16
0
def test_first_empty_list():
    e = ValidationError([])
    assert e.first() is None
Пример #17
0
def test_first_list():
    e = ValidationError(['error @ 0', 'error @ 1', 'error @ 2'])
    assert e.first() == (None, 'error @ 0')
Пример #18
0
 def fail(self, key):
     raise ValidationError(self.error_messages[key])
Пример #19
0
 def validate(self, data):
     raise ValidationError(self.message)
Пример #20
0
def test_first_dict():
    e = ValidationError(
        OrderedDict([('foo', 'error @ foo'), ('bar', 'error @ bar'),
                     ('baz', 'error @ baz')]))
    assert e.first() == (('foo', ), 'error @ foo')
Пример #21
0
def test_first_list():
    e = ValidationError(['error @ 0', 'error @ 1', 'error @ 2'])
    assert e.first() == (None, 'error @ 0')
Пример #22
0
def test_first_empty_list():
    e = ValidationError([])
    assert e.first() is None
Пример #23
0
def test_str():
    e = ValidationError(['foo', 'bar', 'baz'])
    assert str(e) == "['foo', 'bar', 'baz']"
Пример #24
0
def test_normalise_string():
    e = ValidationError('hello')
    assert e.errors == ['hello']
Пример #25
0
 def error(value):
     raise ValidationError('Uh oh!')
Пример #26
0
def test_normalise_list():
    errors = ['foo', 'bar', 'baz']
    e = ValidationError(errors)
    assert e.errors == errors
Пример #27
0
def test_normalise_dict():
    errors = {'foo': ['1', '2', '3'], 'bar': ['4', '5', '6']}
    e = ValidationError(errors)
    assert e.errors == errors
Пример #28
0
def test_first_list_in_dict():
    e = ValidationError(
        OrderedDict([('foo',
                      ['error @ foo.0', 'error @ foo.1', 'error @ foo.2']),
                     ('bar', 'error @ bar'), ('baz', 'error @ baz')]))
    assert e.first() == (('foo', ), 'error @ foo.0')
Пример #29
0
def test_normalise_empty_dict():
    e = ValidationError({})
    assert e.errors == {}
Пример #30
0
 def validate_foo(self, foo):
     raise ValidationError('Uh oh!')