test_combofield.py 1.4 KB

12345678910111213141516171819202122232425262728
  1. from django.core.exceptions import ValidationError
  2. from django.forms import CharField, ComboField, EmailField
  3. from django.test import SimpleTestCase
  4. class ComboFieldTest(SimpleTestCase):
  5. def test_combofield_1(self):
  6. f = ComboField(fields=[CharField(max_length=20), EmailField()])
  7. self.assertEqual('test@example.com', f.clean('test@example.com'))
  8. with self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 20 characters (it has 28).'"):
  9. f.clean('longemailaddress@example.com')
  10. with self.assertRaisesMessage(ValidationError, "'Enter a valid email address.'"):
  11. f.clean('not an email')
  12. with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
  13. f.clean('')
  14. with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
  15. f.clean(None)
  16. def test_combofield_2(self):
  17. f = ComboField(fields=[CharField(max_length=20), EmailField()], required=False)
  18. self.assertEqual('test@example.com', f.clean('test@example.com'))
  19. with self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 20 characters (it has 28).'"):
  20. f.clean('longemailaddress@example.com')
  21. with self.assertRaisesMessage(ValidationError, "'Enter a valid email address.'"):
  22. f.clean('not an email')
  23. self.assertEqual('', f.clean(''))
  24. self.assertEqual('', f.clean(None))