def test_mapping_decorator_cumul(self): """ Mappings should cumulate the ``super`` mappings and the local mappings.""" class FryMapper(Mapper): _model_name = 'res.users' @changed_by('name', 'city') @mapping def name(self): pass class FarnsworthMapper(FryMapper): _model_name = 'res.users' @changed_by('email') @mapping def email(self): pass name_def = MappingDefinition(changed_by=set(('name', 'city')), only_create=False) email_def = MappingDefinition(changed_by=set(('email', )), only_create=False) self.assertEqual(FarnsworthMapper._map_methods, { 'name': name_def, 'email': email_def })
def test_mapping_decorator_cross_classes(self): """ Mappings should not propagate to other classes""" class MomMapper(Mapper): _model_name = 'res.users' @changed_by('name', 'city') @mapping def name(self): pass class ZappMapper(Mapper): _model_name = 'res.users' @changed_by('email') @only_create @mapping def email(self): pass mom_def = MappingDefinition(changed_by=set(('name', 'city')), only_create=False) zapp_def = MappingDefinition(changed_by=set(('email', )), only_create=True) self.assertEqual(MomMapper._map_methods, {'name': mom_def}) self.assertEqual(ZappMapper._map_methods, {'email': zapp_def})
def test_mapping_decorator(self): class KifKrokerMapper(Mapper): _model_name = 'res.users' @changed_by('name', 'city') @mapping @only_create def name(self): pass @changed_by('email') @mapping def email(self): pass @changed_by('street') @mapping def street(self): pass def no_decorator(self): pass self.maxDiff = None name_def = MappingDefinition(changed_by=set(('name', 'city')), only_create=True) email_def = MappingDefinition(changed_by=set(('email', )), only_create=False) street_def = MappingDefinition(changed_by=set(('street', )), only_create=False) self.assertEqual(KifKrokerMapper._map_methods, { 'name': name_def, 'email': email_def, 'street': street_def, })
def test_several_bases_cumul(self): class FryMapper(Mapper): _model_name = 'res.users' @changed_by('name', 'city') @mapping def name(self): pass @only_create @mapping def street(self): pass @only_create @mapping def zip(self): pass class FarnsworthMapper(Mapper): _model_name = 'res.users' @changed_by('email') @mapping def name(self): pass @changed_by('street') @mapping def city(self): pass @mapping def zip(self): pass class ThirdMapper(FryMapper, FarnsworthMapper): _model_name = 'res.users' @changed_by('email', 'street') @mapping def name(self): pass @mapping def email(self): pass name_def = MappingDefinition(changed_by=set( ('name', 'city', 'email', 'street')), only_create=False) street_def = MappingDefinition(changed_by=set([]), only_create=True) city_def = MappingDefinition(changed_by=set(('street', )), only_create=False) email_def = MappingDefinition(changed_by=set([]), only_create=False) zip_def = MappingDefinition(changed_by=set([]), only_create=True) self.assertEqual(ThirdMapper._map_methods['name'], name_def) self.assertEqual(ThirdMapper._map_methods['street'], street_def) self.assertEqual(ThirdMapper._map_methods['city'], city_def) self.assertEqual(ThirdMapper._map_methods['email'], email_def) self.assertEqual(ThirdMapper._map_methods['zip'], zip_def)