def test_update_alias_single_change_all(self): alias = Alias(name=u'test', sort_name=u'test_sort', language_id=1, primary=True) self.session.add(alias) self.session.commit() data = copy.deepcopy(self.GOOD_DATA_SINGLE_UPDATE) data['aliases'][0][0] = alias.alias_id aliases, default_alias = update_aliases([alias], alias.alias_id, data) self.assertEqual(len(aliases), 1) self.assertIsNot(aliases[0], alias) self.assertEqual(aliases[0].name, u'tested') self.assertEqual(aliases[0].sort_name, u'tested_sort') self.assertEqual(aliases[0].language_id, 2) self.assertFalse(aliases[0].primary) self.assertIs(default_alias, aliases[0])
def test_update_alias_single_nop(self): alias = Alias(name=u'test', sort_name=u'test_sort', language_id=1, primary=True) self.session.add(alias) self.session.commit() data = copy.deepcopy(self.GOOD_DATA_SINGLE_UPDATE) data['aliases'][0][0] = alias.alias_id data['aliases'][0][1]['name'] = u'test' data['aliases'][0][1]['sort_name'] = u'test_sort' data['aliases'][0][1]['language_id'] = 1 data['aliases'][0][1]['primary'] = True aliases, default_alias = update_aliases([alias], alias.alias_id, data) self.assertEqual(len(aliases), 1) self.assertIs(aliases[0], alias) self.assertIs(default_alias, alias)
def test_update_alias_primary_numeric(self): alias = Alias(name=u'test', sort_name=u'test_sort', language_id=1, primary=True) self.session.add(alias) self.session.commit() data = copy.deepcopy(self.GOOD_DATA_SINGLE_UPDATE) data['aliases'][0][0] = alias.alias_id data['aliases'][0][1]['primary'] = 2 aliases, default_alias = update_aliases([alias], alias.alias_id, data) self.assertEqual(len(aliases), 1) self.assertIs(aliases[0], alias) self.assertEqual(aliases[0].name, u'test') self.assertEqual(aliases[0].sort_name, u'test_sort') self.assertEqual(aliases[0].language_id, 1) self.assertTrue(aliases[0].primary) self.assertIs(default_alias, aliases[0])
def update(self, data, session): # Create a new EntityData, copying the current data. new_data = self.copy() if self.annotation is not None: new_data.annotation = self.annotation.update(data) else: new_data.annotation = Annotation.create(data) if self.disambiguation is not None: new_data.disambiguation = self.disambiguation.update(data) else: new_data.disambiguation = Disambiguation.create(data) new_data.identifiers =\ update_identifiers(self.identifiers, data) new_data.aliases, default_alias =\ update_aliases(self.aliases, self.default_alias_id, data) if default_alias is not None: new_data.default_alias = default_alias return new_data