def test_regexp(self): import re # String regexp self.assertEqual( regexp('^a')(self.form, DummyField('abcd')).group(0), 'a') self.assertEqual( regexp('^a', re.I)(self.form, DummyField('ABcd')).group(0), 'A') self.assertRaises(ValidationError, regexp('^a'), self.form, DummyField('foo')) self.assertRaises(ValidationError, regexp('^a'), self.form, DummyField(None)) # Compiled regexp self.assertEqual( regexp(re.compile('^a'))(self.form, DummyField('abcd')).group(0), 'a') self.assertEqual( regexp(re.compile('^a', re.I))(self.form, DummyField('ABcd')).group(0), 'A') self.assertRaises(ValidationError, regexp(re.compile('^a')), self.form, DummyField('foo')) self.assertRaises(ValidationError, regexp(re.compile('^a')), self.form, DummyField(None)) # Check custom message self.assertEqual( grab_error_message(regexp('^a', message='foo'), self.form, DummyField('f')), 'foo')
def test_any_of(self): self.assertEqual(AnyOf(['a', 'b', 'c'])(self.form, DummyField('b')), None) self.assertRaises(ValueError, AnyOf(['a', 'b', 'c']), self.form, DummyField(None)) # Anyof in 1.0.1 failed on numbers for formatting the error with a TypeError check_num = AnyOf([1, 2, 3]) self.assertEqual(check_num(self.form, DummyField(2)), None) self.assertRaises(ValueError, check_num, self.form, DummyField(4)) # Test values_formatter formatter = lambda values: '::'.join(text_type(x) for x in reversed(values)) checker = AnyOf([7, 8, 9], message='test %(values)s', values_formatter=formatter) self.assertEqual(grab_error_message(checker, self.form, DummyField(4)), 'test 9::8::7')
def test_regexp(self): import re # String regexp self.assertEqual(regexp('^a')(self.form, DummyField('abcd')), None) self.assertEqual(regexp('^a', re.I)(self.form, DummyField('ABcd')), None) self.assertRaises(ValidationError, regexp('^a'), self.form, DummyField('foo')) self.assertRaises(ValidationError, regexp('^a'), self.form, DummyField(None)) # Compiled regexp self.assertEqual(regexp(re.compile('^a'))(self.form, DummyField('abcd')), None) self.assertEqual(regexp(re.compile('^a', re.I))(self.form, DummyField('ABcd')), None) self.assertRaises(ValidationError, regexp(re.compile('^a')), self.form, DummyField('foo')) self.assertRaises(ValidationError, regexp(re.compile('^a')), self.form, DummyField(None)) # Check custom message self.assertEqual(grab_error_message(regexp('^a', message='foo'), self.form, DummyField('f')), 'foo')
def test_length(self): field = DummyField('foobar') self.assertEqual(length(min=2, max=6)(self.form, field), None) self.assertRaises(ValidationError, length(min=7), self.form, field) self.assertEqual(length(min=6)(self.form, field), None) self.assertRaises(ValidationError, length(max=5), self.form, field) self.assertEqual(length(max=6)(self.form, field), None) self.assertRaises(AssertionError, length) self.assertRaises(AssertionError, length, min=5, max=2) # Test new formatting features grab = lambda **k: grab_error_message(length(**k), self.form, field) self.assertEqual(grab(min=2, max=5, message='%(min)d and %(max)d'), '2 and 5') self.assertTrue('at least 8' in grab(min=8)) self.assertTrue('longer than 5' in grab(max=5)) self.assertTrue('between 2 and 5' in grab(min=2, max=5))