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