1. from django.forms import ChoiceField, Field, Form, Select
    
  2. from django.test import SimpleTestCase
    
  3. 
    
  4. 
    
  5. class BasicFieldsTests(SimpleTestCase):
    
  6.     def test_field_sets_widget_is_required(self):
    
  7.         self.assertTrue(Field(required=True).widget.is_required)
    
  8.         self.assertFalse(Field(required=False).widget.is_required)
    
  9. 
    
  10.     def test_cooperative_multiple_inheritance(self):
    
  11.         class A:
    
  12.             def __init__(self):
    
  13.                 self.class_a_var = True
    
  14.                 super().__init__()
    
  15. 
    
  16.         class ComplexField(Field, A):
    
  17.             def __init__(self):
    
  18.                 super().__init__()
    
  19. 
    
  20.         f = ComplexField()
    
  21.         self.assertTrue(f.class_a_var)
    
  22. 
    
  23.     def test_field_deepcopies_widget_instance(self):
    
  24.         class CustomChoiceField(ChoiceField):
    
  25.             widget = Select(attrs={"class": "my-custom-class"})
    
  26. 
    
  27.         class TestForm(Form):
    
  28.             field1 = CustomChoiceField(choices=[])
    
  29.             field2 = CustomChoiceField(choices=[])
    
  30. 
    
  31.         f = TestForm()
    
  32.         f.fields["field1"].choices = [("1", "1")]
    
  33.         f.fields["field2"].choices = [("2", "2")]
    
  34.         self.assertEqual(f.fields["field1"].widget.choices, [("1", "1")])
    
  35.         self.assertEqual(f.fields["field2"].widget.choices, [("2", "2")])
    
  36. 
    
  37. 
    
  38. class DisabledFieldTests(SimpleTestCase):
    
  39.     def test_disabled_field_has_changed_always_false(self):
    
  40.         disabled_field = Field(disabled=True)
    
  41.         self.assertFalse(disabled_field.has_changed("x", "y"))