def test_retrive_orcid(self): """Has to find and load/or create ORCID data""" with mock.patch('ADSOrcid.matcher.harvest_author_info', return_value= {'orcid_name': [u'Stern, Daniel'], 'author': [u'Stern, D', u'Stern, D K', u'Stern, Daniel'], 'author_norm': [u'Stern, D'], 'name': u'Stern, D K' } ) as context: author = matcher.retrieve_orcid('0000-0003-2686-9241') self.assertDictContainsSubset({'status': None, 'name': u'Stern, D K', 'facts': {u'author': [u'Stern, D', u'Stern, D K', u'Stern, Daniel'], u'orcid_name': [u'Stern, Daniel'], u'author_norm': [u'Stern, D'], u'name': u'Stern, D K'}, 'orcidid': u'0000-0003-2686-9241', 'id': 1, 'account_id': None}, author) self.assertTrue(self.app.session.query(AuthorInfo).first().orcidid, '0000-0003-2686-9241')
def test_update_author(self): """Has to update AuthorInfo and also create a log of events about the changes.""" # bootstrap the db with already existing author info with app.session_scope() as session: ainfo = AuthorInfo(orcidid='0000-0003-2686-9241', facts=json.dumps({'orcid_name': [u'Stern, Daniel'], 'author': [u'Stern, D', u'Stern, D K', u'Stern, Daniel'], 'author_norm': [u'Stern, D'], 'name': u'Stern, D K' }), ) session.add(ainfo) session.commit() with app.session_scope() as session: ainfo = session.query(AuthorInfo).filter_by(orcidid='0000-0003-2686-9241').first() with mock.patch('ADSOrcid.matcher.harvest_author_info', return_value= {'orcid_name': [u'Sternx, Daniel'], 'author': [u'Stern, D', u'Stern, D K', u'Sternx, Daniel'], 'author_norm': [u'Stern, D'], 'name': u'Sternx, D K' } ) as context: matcher.cache.clear() matcher.orcid_cache.clear() matcher.ads_cache.clear() author = matcher.retrieve_orcid('0000-0003-2686-9241') self.assertDictContainsSubset({'status': None, 'name': u'Sternx, D K', 'facts': {u'author': [u'Stern, D', u'Stern, D K', u'Sternx, Daniel'], u'orcid_name': [u'Sternx, Daniel'], u'author_norm': [u'Stern, D'], u'name': u'Sternx, D K'}, 'orcidid': u'0000-0003-2686-9241', 'id': 1, 'account_id': None}, author) self.assertDictContainsSubset({'oldvalue': json.dumps([u'Stern, Daniel']), 'newvalue': json.dumps([u'Sternx, Daniel'])}, session.query(ChangeLog).filter_by(key='0000-0003-2686-9241:update:orcid_name').first().toJSON()) self.assertDictContainsSubset({'oldvalue': json.dumps(u'Stern, D K'), 'newvalue': json.dumps(u'Sternx, D K')}, session.query(ChangeLog).filter_by(key='0000-0003-2686-9241:update:name').first().toJSON()) self.assertDictContainsSubset({'oldvalue': json.dumps([u'Stern, D', u'Stern, D K', u'Stern, Daniel']), 'newvalue': json.dumps([u'Stern, D', u'Stern, D K', u'Sternx, Daniel'])}, session.query(ChangeLog).filter_by(key='0000-0003-2686-9241:update:author').first().toJSON()) with app.session_scope() as session: ainfo = session.query(AuthorInfo).filter_by(orcidid='0000-0003-2686-9241').first() with mock.patch('ADSOrcid.matcher.harvest_author_info', return_value= { 'name': u'Sternx, D K', 'authorized': True } ) as context: matcher.cache.clear() matcher.orcid_cache.clear() matcher.ads_cache.clear() author = matcher.retrieve_orcid('0000-0003-2686-9241') self.assertDictContainsSubset({'status': None, 'name': u'Sternx, D K', 'facts': {u'authorized': True, u'name': u'Sternx, D K'}, 'orcidid': u'0000-0003-2686-9241', 'id': 1, 'account_id': 1}, author) self.assertDictContainsSubset({'oldvalue': json.dumps([u'Stern, Daniel']), 'newvalue': json.dumps([u'Sternx, Daniel'])}, session.query(ChangeLog).filter_by(key='0000-0003-2686-9241:update:orcid_name').first().toJSON()) self.assertDictContainsSubset({'oldvalue': json.dumps(u'Stern, D K'), 'newvalue': json.dumps(u'Sternx, D K')}, session.query(ChangeLog).filter_by(key='0000-0003-2686-9241:update:name').first().toJSON()) self.assertDictContainsSubset({'oldvalue': json.dumps([u'Stern, D', u'Stern, D K', u'Stern, Daniel']), 'newvalue': json.dumps([u'Stern, D', u'Stern, D K', u'Sternx, Daniel'])}, session.query(ChangeLog).filter_by(key='0000-0003-2686-9241:update:author').first().toJSON())