Source code for goat.tests.test_authorities_manager

import unittest, mock, types

from goat.authorities import AuthorityManager, ConceptSearchResult

with open('goat/tests/authorities/conceptpower.json') as f:
    configuration = f.read()

with open('goat/tests/authorities/viaf.json') as f:
    viaf_configuration = f.read()


[docs]class TestAuthorityManager(unittest.TestCase):
[docs] def test_init(self): try: manager = AuthorityManager(configuration) except: self.fail('cannot initialize AuthorityManager') self.assertIn('get', manager.methods) self.assertIsInstance(manager.configuration, dict)
[docs] def test_get_globs(self): manager = AuthorityManager(configuration) self.assertIsInstance(manager._get_globs(), dict)
[docs] def test_get_method_config(self): manager = AuthorityManager(configuration) self.assertIsInstance(manager._get_method_config('get'), dict)
[docs] def test_get_nsmap(self): manager = AuthorityManager(configuration) nsmap = manager._get_nsmap(manager._get_method_config('get')) self.assertIsInstance(nsmap, dict) self.assertIn('digitalHPS', nsmap)
[docs] def test_generic(self): manager = AuthorityManager(configuration) func = manager._generic('get') self.assertIsInstance(func, types.FunctionType)
@mock.patch('requests.get')
[docs] def test_generic_get(self, mock_get): class MockResponse(object): def __init__(self, content): self.content = content mock_get.return_value = MockResponse(""" <conceptpowerReply xmlns:digitalHPS="http://www.digitalhps.org/"> <digitalHPS:conceptEntry> <digitalHPS:id concept_id="CON273fb179-b256-4401-b094-614a5e215692" concept_uri="http://www.digitalhps.org/concepts/CON273fb179-b256-4401-b094-614a5e215692"> http://www.digitalhps.org/concepts/CON273fb179-b256-4401-b094-614a5e215692 </digitalHPS:id> <digitalHPS:lemma> Adolf Ziegler </digitalHPS:lemma> <digitalHPS:pos> NOUN </digitalHPS:pos> <digitalHPS:description> German embryo modeler in late 19th century </digitalHPS:description> <digitalHPS:conceptList> Persons </digitalHPS:conceptList> <digitalHPS:creator_id>mueller</digitalHPS:creator_id> <digitalHPS:equal_to>http://viaf.org/viaf/38882290</digitalHPS:equal_to> <digitalHPS:modified_by/> <digitalHPS:similar_to/> <digitalHPS:synonym_ids/> <digitalHPS:type type_id="986a7cc9-c0c1-4720-b344-853f08c136ab" type_uri="http://www.digitalhps.org/types/TYPE_986a7cc9-c0c1-4720-b344-853f08c136ab"> E21 Person </digitalHPS:type> <digitalHPS:deleted>false</digitalHPS:deleted> <digitalHPS:wordnet_id/> </digitalHPS:conceptEntry> </conceptpowerReply> """) expected_endpoint = 'http://chps.asu.edu/conceptpower/rest/Concept' manager = AuthorityManager(configuration) func = manager._generic('get') result = func(id=1) self.assertEqual(mock_get.call_count, 1) self.assertEqual(mock_get.call_args[0][0], expected_endpoint) self.assertIn('concept_type', result) self.assertIn('name', result) self.assertIn('description', result)
@mock.patch('requests.get') @mock.patch('requests.get')
[docs] def test_generic_nonsense(self): manager = AuthorityManager(configuration) with self.assertRaises(NotImplementedError): manager._generic('nonsense')
[docs]class TestAuthorityManagerVIAF(unittest.TestCase):
[docs] def test_init(self): try: manager = AuthorityManager(viaf_configuration) except: self.fail('cannot initialize AuthorityManager') self.assertIn('get', manager.methods) self.assertIsInstance(manager.configuration, dict)
[docs] def test_get_globs(self): manager = AuthorityManager(viaf_configuration) self.assertIsInstance(manager._get_globs(), dict)
[docs] def test_get_method_config(self): manager = AuthorityManager(viaf_configuration) self.assertIsInstance(manager._get_method_config('get'), dict)
[docs] def test_get_nsmap(self): manager = AuthorityManager(viaf_configuration) nsmap = manager._get_nsmap(manager._get_method_config('get')) self.assertIsInstance(nsmap, dict) self.assertIn('viaf', nsmap)
[docs] def test_generic(self): manager = AuthorityManager(viaf_configuration) func = manager._generic('get') self.assertIsInstance(func, types.FunctionType)
@mock.patch('requests.get')
[docs] def test_generic_get(self, mock_get): class MockResponse(object): def __init__(self, content): self.content = content with open('goat/tests/mock_responses/viaf_get.xml', 'rb') as f: mock_get.return_value = MockResponse(f.read()) expected_endpoint = 'http://viaf.org/viaf/1/viaf.xml' manager = AuthorityManager(viaf_configuration) func = manager._generic('get') result = func(local_id=1) self.assertEqual(mock_get.call_count, 1) self.assertEqual(mock_get.call_args[0][0], expected_endpoint) self.assertIn('concept_type', result) self.assertIn('name', result)
@mock.patch('requests.get') @mock.patch('requests.get')
[docs] def test_generic_nonsense(self): manager = AuthorityManager(viaf_configuration) with self.assertRaises(NotImplementedError): manager._generic('nonsense')