from django.db import connection, models from django.test import SimpleTestCase from .fields import CustomDescriptorField, CustomTypedField class TestDbType(SimpleTestCase): def test_db_parameters_respects_db_type(self): f = CustomTypedField() self.assertEqual(f.db_parameters(connection)['type'], 'custom_field') class DescriptorClassTest(SimpleTestCase): def test_descriptor_class(self): class CustomDescriptorModel(models.Model): name = CustomDescriptorField(max_length=32) m = CustomDescriptorModel() self.assertFalse(hasattr(m, '_name_get_count')) # The field is set to its default in the model constructor. self.assertEqual(m._name_set_count, 1) m.name = 'foo' self.assertFalse(hasattr(m, '_name_get_count')) self.assertEqual(m._name_set_count, 2) self.assertEqual(m.name, 'foo') self.assertEqual(m._name_get_count, 1) self.assertEqual(m._name_set_count, 2) m.name = 'bar' self.assertEqual(m._name_get_count, 1) self.assertEqual(m._name_set_count, 3) self.assertEqual(m.name, 'bar') self.assertEqual(m._name_get_count, 2) self.assertEqual(m._name_set_count, 3)