1. from django.db import connection, models
    
  2. from django.test import SimpleTestCase
    
  3. 
    
  4. from .fields import CustomDescriptorField, CustomTypedField
    
  5. 
    
  6. 
    
  7. class TestDbType(SimpleTestCase):
    
  8.     def test_db_parameters_respects_db_type(self):
    
  9.         f = CustomTypedField()
    
  10.         self.assertEqual(f.db_parameters(connection)["type"], "custom_field")
    
  11. 
    
  12. 
    
  13. class DescriptorClassTest(SimpleTestCase):
    
  14.     def test_descriptor_class(self):
    
  15.         class CustomDescriptorModel(models.Model):
    
  16.             name = CustomDescriptorField(max_length=32)
    
  17. 
    
  18.         m = CustomDescriptorModel()
    
  19.         self.assertFalse(hasattr(m, "_name_get_count"))
    
  20.         # The field is set to its default in the model constructor.
    
  21.         self.assertEqual(m._name_set_count, 1)
    
  22.         m.name = "foo"
    
  23.         self.assertFalse(hasattr(m, "_name_get_count"))
    
  24.         self.assertEqual(m._name_set_count, 2)
    
  25.         self.assertEqual(m.name, "foo")
    
  26.         self.assertEqual(m._name_get_count, 1)
    
  27.         self.assertEqual(m._name_set_count, 2)
    
  28.         m.name = "bar"
    
  29.         self.assertEqual(m._name_get_count, 1)
    
  30.         self.assertEqual(m._name_set_count, 3)
    
  31.         self.assertEqual(m.name, "bar")
    
  32.         self.assertEqual(m._name_get_count, 2)
    
  33.         self.assertEqual(m._name_set_count, 3)