def test_errors_can_generate_list_of_errors_from_error_dict(self): e = InvalidDataError('a message', 42, error_dict={ 'foo': 42, 'bar': 21 }) assert_equals(set((42, 21)), set(e.errors()))
def test_can_not_set_error_dict_and_error_list(self): InvalidDataError('a message', 42, error_dict={}, error_list=['foo']) InvalidDataError('a message', 42, error_dict={'foo': 'bar'}, error_list=[]) with assert_raises(InvalidArgumentsError): InvalidDataError('a message', 42, error_dict={'foo': 'bar'}, error_list=['foo'])
def _error(self, message='a message', value=42, error_dict=None, error_list=None): return InvalidDataError(message, value, error_dict=error_dict, error_list=error_list)
def convert(self, fields, context): if exception_if_invalid: assert (error_fields is None), 'specific fields not supported' raise InvalidDataError('foo', fields, 'key', context) if not error_fields: result = context['result'] error = Error('key', 'msg for global error', fields, context) result.global_errors = result.global_errors + (error,) else: result = context['result'] value = None for fieldname in error_fields: error = Error('key', 'error for %s', value, context) result.children[fieldname].add_error(error) return fields
def handle_validator_result(self, converted_value, result, context, errors=None, nr_new_errors=None): # not calling super() as our errors are special if errors is None: errors = result.errors if nr_new_errors is not None: is_input_valid = (nr_new_errors <= 0) else: is_input_valid = not result.contains_errors() if not self._exception_if_invalid: if is_input_valid: result.set(value=converted_value) return result for item_errors in (errors or ()): if (item_errors is None) or (len(item_errors) == 0): continue error = item_errors[0] raise InvalidDataError(error.msg, error.value, error.key, context) return result.value
def test_errors_can_generate_list_of_errors_from_single_error(self): e = InvalidDataError('a message', 42) assert_equals((e, ), e.errors())
def test_can_return_list_of_errors(self): e = InvalidDataError('a message', 42, error_list=['foo']) assert_equals(('foo', ), e.errors())
def mock_process(fields, context=None): raise InvalidDataError('a message', fields, key='expected', context=context)
def error(self, message='bad input', value=None): return InvalidDataError(message, value)