38 lines
868 B
Python
38 lines
868 B
Python
from handle_params import HandleParams, ValidationError
|
|
import pytest, re
|
|
|
|
def regex_validator(regex, error_message):
|
|
|
|
def _validate(_, value):
|
|
if len(value) > 0:
|
|
m = re.search(regex, value)
|
|
else:
|
|
return
|
|
|
|
if m:
|
|
return value
|
|
else:
|
|
raise ValidationError(error_message)
|
|
|
|
return _validate
|
|
|
|
|
|
def test_hp_init():
|
|
hp = HandleParams()
|
|
|
|
|
|
def test_hp_with_text_field():
|
|
hp = HandleParams()
|
|
hp.add_field('name', {
|
|
'validate': regex_validator(
|
|
r'^([A-Z]\S+\.?) ([A-Z]\S+\.? )?([A-Z]\S+\.?)$',
|
|
'Does not look like a name'
|
|
)
|
|
})
|
|
hp.validate_params({
|
|
'name': 'Florian Heß'
|
|
})
|
|
assert hp.fields['name'].value == 'Florian Heß'
|
|
with pytest.raises(ValidationError):
|
|
assert hp.validate_params({ 'name': '123' })
|