def test_set_value(self): updates = { 'name': 'revised name', 'count': 9, 'rate': 4940234.449994, 'amount': Decimal('1000000.01'), 'timestamp': DATETIME_FIXTURE, 'dunder': 'standing' } expected = updates.copy() expected['dunder'] = "__computed__" for field_group_class, field_group, constructor in field_group_fixtures( field_group_classes=MUTABLE_FIELD_GROUP_CLASSES): instance = constructor(INITIAL_VALUES) for field in field_group: self.assertEqual(EXPECTED_VALUES[field.name], field_group._get_value(instance, field)) field_group.set_value(instance, field, updates[field.name]) self.assertEqual( expected[field.name], field_group._get_value(instance, field), "set_value() does not match for {}, {}, {}".format( field_group_class, field_group, constructor))
def test_get_value(self): for _, field_group, constructor in field_group_fixtures(): instance = constructor(INITIAL_VALUES) for field in field_group: self.assertEqual(EXPECTED_VALUES[field.name], field_group._get_value(instance, field))
def test_iteration(self): for _, field_group, _ in field_group_fixtures(): self.assertListEqual([('name', str), ('count', int), ('rate', float), ('amount', Decimal), ('timestamp', datetime), ('dunder', str)], [(field.name, field._type) for field in field_group])
def test_as_dict(self): for _, field_group, constructor in field_group_fixtures(): self.assertEqual( EXPECTED_VALUES, field_group.as_dict(constructor(INITIAL_VALUES)), "as_dict() does not match for {}, {}".format( field_group, constructor))
def test_filled_instance(self): for _, field_group, constructor in field_group_fixtures(): new_instance = field_group.fill_instance_from_dict(INITIAL_VALUES) self.assertEqual( EXPECTED_VALUES, field_group.as_dict(new_instance), "fill_instance_from_dict() does not match for {}, {}".format( field_group, constructor))
def test_derivation(self): for _, field_group, _ in field_group_fixtures(): internal = field_group.derive(prefix_name_with_underscore) self.assertIsInstance(internal, type(field_group)) for internal_item, public_item in zip(internal, field_group): self.assertEqual('_' + public_item._name, internal_item._name)
def test_instances_differ_no_differences(self): for _, field_group, constructor in field_group_fixtures(): instance = field_group.fill_instance_from_dict(INITIAL_VALUES) other = field_group.fill_instance_from_dict(INITIAL_VALUES) self.assertFalse( field_group.instances_differ(instance, other), "fill_instance_from_dict() does not match for {}, {}".format( field_group, constructor))
def test_instances_differ_differences_exist(self): modified = INITIAL_VALUES.copy() modified['amount'] = Decimal('3.99') for _, field_group, constructor in field_group_fixtures(): instance = field_group.fill_instance_from_dict(INITIAL_VALUES) other = field_group.fill_instance_from_dict(modified) self.assertTrue( field_group.instances_differ(instance, other), "fill_instance_from_dict() does not match for {}, {}".format( field_group, constructor))