tests.py 1.2 KB

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