def test_deconstruct_custom(self): """Attributes at custom values included in deconstruction.""" af = ArrayField( dbtype='text', dimension=2, type_cast=custom_type_cast, blank=False, null=False, default=[['a'], ['b']], ) name, path, args, kwargs = af.deconstruct() naf = ArrayField(*args, **kwargs) self.assertEqual(args, []) self.assertEqual( kwargs, { 'dbtype': 'text', 'dimension': 2, 'type_cast': custom_type_cast, 'blank': False, 'null': False, 'default': [['a'], ['b']], }, ) self.assertEqual(af._array_type, naf._array_type) self.assertEqual(af._dimension, naf._dimension) self.assertEqual(af._type_cast, naf._type_cast) self.assertEqual(af.blank, naf.blank) self.assertEqual(af.null, naf.null) self.assertEqual(af.default, naf.default)
def test_deconstruct_unknown_dbtype(self): """Deconstruction does not include type_cast if dbtype unknown.""" af = ArrayField(dbtype='foo') name, path, args, kwargs = af.deconstruct() naf = ArrayField(*args, **kwargs) self.assertEqual(kwargs, {'dbtype': 'foo'})
def test_deconstruct_defaults(self): """Attributes at default values left out of deconstruction.""" af = ArrayField() name, path, args, kwargs = af.deconstruct() naf = ArrayField(*args, **kwargs) self.assertEqual((args, kwargs), ([], {})) self.assertEqual(af._array_type, naf._array_type) self.assertEqual(af._dimension, naf._dimension) self.assertEqual(af._type_cast, naf._type_cast) self.assertEqual(af.blank, naf.blank) self.assertEqual(af.null, naf.null) self.assertEqual(af.default, naf.default)