def test_validator_element_invalid(self): """ If a validator references an invalid element, then we don't let that exception propogate """ f = Form('f') def validator(form): f.elements.f1.value f.add_text('f1', 'f1', maxlength=1) f.add_text('f2', 'f2') f.add_validator(validator) f.set_submitted({'f-submit-flag': 'submitted', 'f1': '12'}) assert not f.is_valid()
def test_all_errors(self): def validator(form): if form.elements.myfield.is_valid(): if form.elements.myfield.value != 'foo': raise ValueInvalid('My Field: must be "foo", not "%s"' % form.elements.myfield.value) f1 = Form('login1') f1.add_text('field', 'Field', required=True) f1.add_text('myfield', 'My Field', required=True) f1.add_validator(validator) post = {'login1-submit-flag': 'submitted', 'myfield': 'bar'} f1.set_submitted(post) assert not f1.is_valid() form_errors, field_errors = f1.all_errors() self.assertEqual(field_errors, {'Field': ['field is required']}) self.assertEqual(form_errors, ['My Field: must be "foo", not "bar"']) # now make sure we can set the id as the field errors dict key if needed form_errors, field_errors = f1.all_errors(id_as_key=True) self.assertEqual(field_errors, {'field': ['field is required']})
def test_form_validators(self): def validator(form): if form.elements.myfield.is_valid(): if form.elements.myfield.value != 'foo': raise ValueInvalid('My Field: must be "foo", not "%s"' % form.elements.myfield.value) f = Form('f') f.add_text('myfield', 'My Field') f.add_validator(validator) f.set_submitted({'f-submit-flag': 'submitted', 'myfield': 'bar'}) assert not f.is_valid() self.assertEqual(f._errors[0], 'My Field: must be "foo", not "bar"') f.set_submitted({'f-submit-flag': 'submitted', 'myfield': 'foo'}) assert f.is_valid() assert len(f._errors) == 0 # custom message f = Form('f') f.add_text('myfield', 'My Field') f.add_validator(validator, 'value incorrect') f.set_submitted({'f-submit-flag': 'submitted', 'myfield': 'bar'}) assert not f.is_valid() self.assertEqual(f._errors[0], 'value incorrect')
def test_validator_fe_instance(self): form = Form('f') form.add_text('units', 'Units') form.add_validator(Int()) assert isinstance(form._validators[0][0], Int)