def test_convert_and_use_params(self): arg = Arg(float, use=lambda val: val + 1) assert arg.validated('foo', 41) == 42.0
def test_error_raised_if_use_is_uncallable(self): with pytest.raises(ValueError) as excinfo: Arg(use='bad') assert '{0!r} is not a callable or list of callables'.format('bad') in str(excinfo)
def test_use_param(self): arg = Arg(use=lambda x: x.upper()) assert arg.validated('foo', 'foo') == 'FOO'
def test_use_can_be_list_of_callables(self): arg = Arg(use=[lambda x: x.upper(), lambda x: x.strip()]) assert arg.validated('foo', ' foo ') == 'FOO'
def test_default_valdation_msg(self): arg = Arg(validate=lambda x: x == 42) with pytest.raises(ValidationError) as excinfo: arg.validated('foo', 1) assert 'Validator <lambda>(1) is not True' in str(excinfo)
def test_conversion_to_str(self): arg = Arg(str) assert arg.validated('foo', 42) == '42'
def test_custom_error(self): arg = Arg(type_=int, error='not an int!') with pytest.raises(ValidationError) as excinfo: arg.validated('foo', 'badinput') assert 'not an int!' in str(excinfo)
def test_validated_string_conversion_null(self): arg = Arg(type_=str) assert arg.validated('foo', None) is None
def test_validated_long_type(self): arg = Arg(type_=long_type) assert arg.validated('foo', 42) == 42
def test_validated_text_type(self): arg = Arg(type_=text_type) assert arg.validated('foo', 42) == '42'
def test_validated_null_noop(self): arg = Arg() assert arg.validated('foo', {}) == {} assert arg.validated('foo', None) is None