class RegistryTests(unittest.TestCase): def setUp(self): self.reg = Registry() self.prov = trees self.prov2 = geo def tearDown(self): self.reg = None self.prov = None self.prov2 = None def test_empty_register_provider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) def test_empty_register_removeProvider(self): self.assertFalse(self.reg.remove_provider('TREES')) def test_empty_getProviders(self): self.assertEquals(self.reg.get_providers(), []) self.assertEquals(self.reg.get_providers(ids=[]), []) def test_empty_getProviderById(self): self.assertFalse(self.reg.get_provider('TREES')) def test_empty_findConcepts(self): self.assertEquals(self.reg.find({}), []) def test_empty_getAllConcepts(self): self.assertEquals(self.reg.get_all(), []) def test_one_provider_register_provider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.reg.register_provider(self.prov2) self.assertEquals(self.reg.get_provider('GEOGRAPHY'), self.prov2) def test_one_provider_register_double_provider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.assertRaises( RegistryException, self.reg.register_provider, self.prov ) def test_one_provider_removeProvider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.reg.remove_provider('TREES') self.assertFalse(self.reg.get_provider('TREES')) def test_one_provider_getProviders(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_providers(), [self.prov]) self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov]) def test_one_provider_getProvidersWithIds(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov]) self.assertEquals(self.reg.get_providers(), [self.prov]) self.assertEquals(self.reg.get_providers(ids=['GEOGRAPHY']), []) def test_one_provider_getPoviderWithId(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) def test_one_provider_findConcepts(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' } ] } ] ) def test_one_provider_getConceptByUri(self): self.reg.register_provider(self.prov) c = self.reg.get_by_uri('http://id.trees.org/1') self.assertEqual(c.id, '1') self.assertEqual(c.uri, 'http://id.trees.org/1') def test_one_provider_getConceptByUnexistingUri(self): self.reg.register_provider(self.prov) c = self.reg.get_by_uri('http://id.thingy.com/123456') self.assertFalse(c) def test_one_provider_findConceptsWithProviderid(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=['TREES']), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' } ] } ] ) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=[]), [] ) def test_one_provider_getAllConcepts(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.get_all(), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' }, { 'id': '2', 'uri': 'http://id.trees.org/2', 'type': 'concept', 'label': 'De Paardekastanje' }, { 'id': 3, 'uri': 'http://id.trees.org/3', 'type': 'collection', 'label': 'Bomen per soort' } ] } ] )
class RegistryTests(unittest.TestCase): def setUp(self): self.reg = Registry() self.prov = trees self.prov2 = geo def tearDown(self): self.reg = None self.prov = None self.prov2 = None def test_empty_register_provider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) def test_empty_register_removeProvider(self): self.assertFalse(self.reg.remove_provider('TREES')) def test_empty_getProviders(self): self.assertEquals(self.reg.get_providers(), []) self.assertEquals(self.reg.get_providers(ids=[]), []) def test_empty_getProviderById(self): self.assertFalse(self.reg.get_provider('TREES')) self.assertFalse(self.reg.get_provider('http://id.trees.org')) def test_empty_findConcepts(self): self.assertEquals(self.reg.find({}), []) def test_empty_getAllConcepts(self): self.assertEquals(self.reg.get_all(), []) def test_one_provider_register_provider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.assertEquals( self.reg.get_provider('http://id.trees.org'), self.prov ) self.reg.register_provider(self.prov2) self.assertEquals(self.reg.get_provider('GEOGRAPHY'), self.prov2) self.assertEquals( self.reg.get_provider('urn:x-skosprovider:geography'), self.prov2 ) def test_one_provider_register_double_provider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.assertRaises( RegistryException, self.reg.register_provider, self.prov ) #Change the id, but keep identical URIs self.prov.metadata['id'] = 'TREESTOO' self.assertRaises( RegistryException, self.reg.register_provider, self.prov ) self.prov.metadata['id'] = 'TREES' def test_one_provider_removeProvider(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.reg.remove_provider('TREES') self.assertFalse(self.reg.get_provider('TREES')) def test_one_provider_removeProviderWithUri(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) self.reg.remove_provider('http://id.trees.org') self.assertFalse(self.reg.get_provider('TREES')) def test_one_provider_getProviders(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_providers(), [self.prov]) self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov]) def test_one_provider_getProvidersWithIds(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov]) self.assertEquals(self.reg.get_providers(), [self.prov]) self.assertEquals(self.reg.get_providers(ids=['GEOGRAPHY']), []) def test_one_provider_getProvidersWithUris(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_providers(ids=['http://id.trees.org']), [self.prov]) self.assertEquals(self.reg.get_providers(), [self.prov]) self.assertEquals(self.reg.get_providers(ids=['urn:x-skosprovider:geography']), []) def test_one_provider_getProvidersWithSubject(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_providers(subject='something'), []) self.assertEquals(self.reg.get_providers(subject='biology'), [self.prov]) def test_one_provider_getPoviderWithId(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('TREES'), self.prov) def test_one_provider_getPoviderWithUri(self): self.reg.register_provider(self.prov) self.assertEquals(self.reg.get_provider('http://id.trees.org'), self.prov) def test_one_provider_findConcepts(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' } ] } ] ) def test_one_provider_getConceptByUri(self): self.reg.register_provider(self.prov) c = self.reg.get_by_uri('http://id.trees.org/1') self.assertEqual(c.id, '1') self.assertEqual(c.uri, 'http://id.trees.org/1') def test_one_provider_getConceptByUriDifferentFromConceptScheme(self): from skosprovider.skos import ConceptScheme from skosprovider.providers import DictionaryProvider trees = DictionaryProvider( {'id': 'TREES', 'default_language': 'nl'}, [larch, chestnut, species], concept_scheme=ConceptScheme('urn:something') ) self.reg.register_provider(trees) c = self.reg.get_by_uri('http://id.trees.org/1') self.assertEqual(c.id, '1') self.assertEqual(c.uri, 'http://id.trees.org/1') def test_one_provider_getConceptByUnexistingUri(self): self.reg.register_provider(self.prov) c = self.reg.get_by_uri('http://id.thingy.com/123456') self.assertFalse(c) def test_get_by_invalid_uri(self): self.assertRaises( ValueError, self.reg.get_by_uri, None ) def test_one_provider_findConceptsWithProviderid(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=['TREES']), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' } ] } ] ) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=[]), [] ) def test_one_provider_getAllConcepts(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.get_all(), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' }, { 'id': '2', 'uri': 'http://id.trees.org/2', 'type': 'concept', 'label': 'De Paardekastanje' }, { 'id': 3, 'uri': 'http://id.trees.org/3', 'type': 'collection', 'label': 'Bomen per soort' } ] } ] ) def test_one_provider_getAllConceptsDifferentLanguage(self): self.reg.register_provider(self.prov) self.assertEquals( self.reg.get_all(language="en"), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'The Larch' }, { 'id': '2', 'uri': 'http://id.trees.org/2', 'type': 'concept', 'label': 'The Chestnut' }, { 'id': 3, 'uri': 'http://id.trees.org/3', 'type': 'collection', 'label': 'Trees by species' } ] } ] ) def test_two_providers_findConceptsWithProviderIdAndUri(self): self.reg.register_provider(self.prov2) self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=['TREES']), self.reg.find({'label': 'The Larch'}, providers=['http://id.trees.org']), ) def test_two_providers_findConceptsProvidersDictionarySyntax(self): self.reg.register_provider(self.prov2) self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=['TREES']), self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}), ) def test_two_providers_findConceptsProvidersDictionarySyntax(self): self.reg.register_provider(self.prov2) self.reg.register_provider(self.prov) self.assertEquals( self.reg.find({'label': 'The Larch'}, providers=['TREES']), self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}), ) def test_one_provider_findConceptsWithSubject(self): self.reg.register_provider(self.prov) provs = self.reg.get_providers(subject='biology') res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs] self.assertEquals( res, self.reg.find({},subject='biology') ) def test_one_provider_findConceptsWithSubject_language_en(self): self.reg.register_provider(self.prov) provs = self.reg.get_providers(subject='biology') res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({}, language='en')} for p in provs] self.assertEquals( res, self.reg.find({},subject='biology', language='en') ) def test_one_provider_findConceptsWithSubject_language_nl(self): self.reg.register_provider(self.prov) provs = self.reg.get_providers(subject='biology') res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs] self.assertEquals( res, self.reg.find({},subject='biology', language='nl') )
class RegistryTests(unittest.TestCase): def setUp(self): self.reg = Registry() self.prov = trees self.prov2 = geo def tearDown(self): self.reg = None self.prov = None self.prov2 = None def test_default_metadata_is_dict(self): self.assertIsInstance(self.reg.get_metadata(), dict) def test_passed_metadata_is_dict(self): self.reg = Registry(metadata={'catalog': {'uri': 'http://my.data.org'}}) assert 'catalog' in self.reg.get_metadata() assert 'uri' in self.reg.get_metadata().get('catalog') def test_set_instance_scope(self): self.reg = Registry(instance_scope='threaded_global') assert self.reg.instance_scope == 'threaded_global' def test_set_invalid_instance_scope(self): with pytest.raises(ValueError): Registry(instance_scope='bad_scope') def test_empty_register_provider(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('TREES'), self.prov) def test_empty_register_removeProvider(self): self.assertFalse(self.reg.remove_provider('TREES')) def test_empty_getProviders(self): self.assertEqual(self.reg.get_providers(), []) self.assertEqual(self.reg.get_providers(ids=[]), []) def test_empty_getProviderById(self): self.assertFalse(self.reg.get_provider('TREES')) self.assertFalse(self.reg.get_provider('http://id.trees.org')) def test_empty_findConcepts(self): self.assertEqual(self.reg.find({}), []) def test_empty_getAllConcepts(self): self.assertEqual(self.reg.get_all(), []) def test_one_provider_register_provider(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('TREES'), self.prov) self.assertEqual( self.reg.get_provider('http://id.trees.org'), self.prov ) self.reg.register_provider(self.prov2) self.assertEqual(self.reg.get_provider('GEOGRAPHY'), self.prov2) self.assertEqual( self.reg.get_provider('urn:x-skosprovider:geography'), self.prov2 ) def test_one_provider_register_double_provider(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('TREES'), self.prov) self.assertRaises( RegistryException, self.reg.register_provider, self.prov ) #Change the id, but keep identical URIs self.prov.metadata['id'] = 'TREESTOO' self.assertRaises( RegistryException, self.reg.register_provider, self.prov ) self.prov.metadata['id'] = 'TREES' def test_register_provider_wrong_scope(self): from skosprovider.skos import ConceptScheme from skosprovider.providers import DictionaryProvider trees = DictionaryProvider( {'id': 'TREES', 'default_language': 'nl'}, [larch, chestnut, species], concept_scheme=ConceptScheme('urn:something'), allowed_instance_scopes = ['threaded_thread'] ) with pytest.raises(RegistryException): self.reg.register_provider(trees) def test_register_provider_no_uri(self): p = Mock() p.allowed_instance_scopes = ['single'] p.get_vocabulary_id = MagicMock(return_value='MYID') del p.get_vocabulary_uri p.concept_scheme = MagicMock() p.concept_scheme.uri = 'http://my.id.org' self.reg.register_provider(p) assert p == self.reg.get_provider('MYID') assert p == self.reg.get_provider('http://my.id.org') def test_remove_provider_no_uri(self): p = Mock() p.allowed_instance_scopes = ['single'] p.get_vocabulary_id = MagicMock(return_value='MYID') del p.get_vocabulary_uri p.concept_scheme = MagicMock() p.concept_scheme.uri = 'http://my.id.org' self.reg.register_provider(p) assert p == self.reg.get_provider('MYID') assert p == self.reg.get_provider('http://my.id.org') self.reg.remove_provider('http://my.id.org') assert not self.reg.get_provider('MYID') def test_one_provider_removeProvider(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('TREES'), self.prov) self.reg.remove_provider('TREES') self.assertFalse(self.reg.get_provider('TREES')) def test_one_provider_removeProviderWithUri(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('TREES'), self.prov) self.reg.remove_provider('http://id.trees.org') self.assertFalse(self.reg.get_provider('TREES')) def test_one_provider_getProviders(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_providers(), [self.prov]) self.assertEqual(self.reg.get_providers(ids=['TREES']), [self.prov]) def test_one_provider_getProvidersWithIds(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_providers(ids=['TREES']), [self.prov]) self.assertEqual(self.reg.get_providers(), [self.prov]) self.assertEqual(self.reg.get_providers(ids=['GEOGRAPHY']), []) def test_one_provider_getProvidersWithUris(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_providers(ids=['http://id.trees.org']), [self.prov]) self.assertEqual(self.reg.get_providers(), [self.prov]) self.assertEqual(self.reg.get_providers(ids=['urn:x-skosprovider:geography']), []) def test_one_provider_getProvidersWithSubject(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_providers(subject='something'), []) self.assertEqual(self.reg.get_providers(subject='biology'), [self.prov]) def test_one_provider_getPoviderWithId(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('TREES'), self.prov) def test_one_provider_getPoviderWithUri(self): self.reg.register_provider(self.prov) self.assertEqual(self.reg.get_provider('http://id.trees.org'), self.prov) def test_one_provider_findConcepts(self): self.reg.register_provider(self.prov) self.assertEqual( self.reg.find({'label': 'The Larch'}), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' } ] } ] ) def test_one_provider_getConceptByUri(self): self.reg.register_provider(self.prov) c = self.reg.get_by_uri('http://id.trees.org/1') self.assertEqual(c.id, '1') self.assertEqual(c.uri, 'http://id.trees.org/1') def test_one_provider_getConceptByUriDifferentFromConceptScheme(self): from skosprovider.skos import ConceptScheme from skosprovider.providers import DictionaryProvider trees = DictionaryProvider( {'id': 'TREES', 'default_language': 'nl'}, [larch, chestnut, species], concept_scheme=ConceptScheme('urn:something') ) self.reg.register_provider(trees) c = self.reg.get_by_uri('http://id.trees.org/1') self.assertEqual(c.id, '1') self.assertEqual(c.uri, 'http://id.trees.org/1') def test_one_provider_getConceptByUnexistingUri(self): self.reg.register_provider(self.prov) c = self.reg.get_by_uri('http://id.thingy.com/123456') self.assertFalse(c) def test_get_by_invalid_uri(self): self.assertRaises( ValueError, self.reg.get_by_uri, None ) def test_one_provider_findConceptsWithProviderid(self): self.reg.register_provider(self.prov) self.assertEqual( self.reg.find({'label': 'The Larch'}, providers=['TREES']), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' } ] } ] ) self.assertEqual( self.reg.find({'label': 'The Larch'}, providers=[]), [] ) def test_one_provider_getAllConcepts(self): self.reg.register_provider(self.prov) self.assertEqual( self.reg.get_all(), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'De Lariks' }, { 'id': '2', 'uri': 'http://id.trees.org/2', 'type': 'concept', 'label': 'De Paardekastanje' }, { 'id': 3, 'uri': 'http://id.trees.org/3', 'type': 'collection', 'label': 'Bomen per soort' } ] } ] ) def test_one_provider_getAllConceptsDifferentLanguage(self): self.reg.register_provider(self.prov) self.assertEqual( self.reg.get_all(language="en"), [ { 'id': 'TREES', 'concepts': [ { 'id': '1', 'uri': 'http://id.trees.org/1', 'type': 'concept', 'label': 'The Larch' }, { 'id': '2', 'uri': 'http://id.trees.org/2', 'type': 'concept', 'label': 'The Chestnut' }, { 'id': 3, 'uri': 'http://id.trees.org/3', 'type': 'collection', 'label': 'Trees by species' } ] } ] ) def test_two_providers_findConceptsWithProviderIdAndUri(self): self.reg.register_provider(self.prov2) self.reg.register_provider(self.prov) self.assertEqual( self.reg.find({'label': 'The Larch'}, providers=['TREES']), self.reg.find({'label': 'The Larch'}, providers=['http://id.trees.org']), ) def test_two_providers_findConceptsProvidersDictionarySyntax(self): self.reg.register_provider(self.prov2) self.reg.register_provider(self.prov) self.assertEqual( self.reg.find({'label': 'The Larch'}, providers=['TREES']), self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}), ) def test_two_providers_findConceptsProvidersDictionarySyntax(self): self.reg.register_provider(self.prov2) self.reg.register_provider(self.prov) self.assertEqual( self.reg.find({'label': 'The Larch'}, providers=['TREES']), self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}), ) def test_one_provider_findConceptsWithSubject(self): self.reg.register_provider(self.prov) provs = self.reg.get_providers(subject='biology') res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs] self.assertEqual( res, self.reg.find({},subject='biology') ) def test_one_provider_findConceptsWithSubject_language_en(self): self.reg.register_provider(self.prov) provs = self.reg.get_providers(subject='biology') res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({}, language='en')} for p in provs] self.assertEqual( res, self.reg.find({},subject='biology', language='en') ) def test_one_provider_findConceptsWithSubject_language_nl(self): self.reg.register_provider(self.prov) provs = self.reg.get_providers(subject='biology') res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs] self.assertEqual( res, self.reg.find({},subject='biology', language='nl') )