def test_catalogue_of_life(tmpdir): data = fixtures('data_providers', 'catalogueoflife') id_ = '9249d9473aac5c8e99fb9d758ced91ec' repos = create_repos(tmpdir) with patch('pytsammalex.util.requests', MockRequests(content=data['identify'])): prov = CatalogueOfLife(Path(repos)) assert (prov.identify('x') == id_) with patch('pytsammalex.util.requests', MockRequests(content=data['metadata'])): prov = CatalogueOfLife(Path(repos)) md = prov.cached_metadata('test', id_) taxon = {} prov.update(taxon, md) assert (taxon == { 'catalogueoflife_url': 'http://www.catalogueoflife.org/col/' 'browse/tree/id/' '9249d9473aac5c8e99fb9d758ced91ec', 'class': 'Mammalia', 'family': 'Felidae', 'kingdom': 'Animalia', 'order': 'Carnivora', 'phylum': 'Chordata' })
def test_Catalogueoflife(self): from pytsammalex.data_providers.catalogueoflife import CatalogueOfLife data = fixtures('data_providers', 'catalogueoflife') id_ = '9249d9473aac5c8e99fb9d758ced91ec' repos = create_repos(self.tmp_path()) with patch('pytsammalex.util.requests', MockRequests(content=data['identify'])): prov = CatalogueOfLife(repos) self.assertEqual(prov.identify('x'), id_) with patch('pytsammalex.util.requests', MockRequests(content=data['metadata'])): prov = CatalogueOfLife(repos) md = prov.cached_metadata('test', id_) taxon = {} prov.update(taxon, md) self.assertEqual( taxon, { 'catalogueoflife_url': 'http://www.catalogueoflife.org/col/browse/tree/id/9249d9473aac5c8e99fb9d758ced91ec', 'class': 'Mammalia', 'family': 'Felidae', 'kingdom': 'Animalia', 'order': 'Carnivora', 'phylum': 'Chordata' })
def test_senckenberg(): prov, img, data = _provider_img_data(Senckenberg) with patch('pytsammalex.util.requests', MockRequests(text=data['metadata'])): assert (prov.metadata(img)['source_url'] == 'http://www.westafricanplants.senckenberg.de/images/pictures/' 'ficus_polita_img_04024_ralfbiechele_722_fc6e25.jpg')
def test_zimbabweflora(): prov, img, data = _provider_img_data(Zimbabweflora) with patch('pytsammalex.util.requests', MockRequests(text=data['metadata'])): assert (prov.metadata(img)['source_url'] == 'http://www.zimbabweflora.co.zw/speciesdata/images/' '10/100760-2.jpg')
def test_ImageProvider_retrieve(self): from pytsammalex.image_providers.base import ImageProvider repos = create_repos(self.tmp_path()) fname = self.tmp_path('test') media = self.tmp_path(('media.json')) with fname.open('w', encoding='utf8') as fp: fp.write('test') class P(ImageProvider): def __init__(self, md): self._md = md ImageProvider.__init__(self, repos) def metadata(self, item): return self._md self.assertIsNone(P({}).retrieve(None, None, None, None)) staged_image = Staged_images.fromdict({'id': 'abc', 'taxa__id': 'abc'}) prov = P({'source_url': fname}) with self.assertRaises(ValueError): prov.retrieve(staged_image, None, [md5(fname)], None) cdstar = MagicMock( create=MagicMock(return_value=[(None, None, MOCK_CDSTAR_OBJECT)])) prov = P({'source_url': 'x'}) with patch('pytsammalex.util.requests', MockRequests()): with MediaCatalog(media.name, repos=repos) as mcat: prov.retrieve(staged_image, cdstar, [], mcat) self.assertTrue(cdstar.create.called) self.assertEqual(len(MediaCatalog(media.name, repos=repos)), 1)
def test_Eol(self): from pytsammalex.data_providers.eol import EOL data = fixtures('data_providers', 'eol') with patch( 'pytsammalex.util.requests', MockRequests(json=[ data['identify'], data['metadata'], data['hierarchy'] ])): prov = EOL(create_repos(self.tmp_path())) taxon = {'id': 'pantheraleo', 'name': 'Panthera leo'} prov.update_taxon(taxon) self.assertEqual( taxon, { 'eol_id': 328672, 'english_name': 'Asian lion', 'id': 'pantheraleo', 'name': 'Panthera leo', 'class': 'Mammalia', 'family': 'Felidae', 'genus': 'Panthera', 'kingdom': 'Animalia', 'order': 'Carnivora', 'phylum': 'Chordata', 'taxonRank': 'species' })
def test_wikimedia(): prov, img, data = _provider_img_data(Wikimedia) with patch('pytsammalex.util.requests', MockRequests(content=data['metadata'])): assert (prov.metadata(img)['source_url'] == 'https://upload.wikimedia.org/wikipedia/' 'commons/1/1d/Alcelaphus_caama.jpg')
def test_Eol(self): from pytsammalex.image_providers.eol import Eol prov, img, data = self._provider_img_data(Eol) with patch('pytsammalex.util.requests', MockRequests(json=data['metadata'])): self.assertEqual( prov.metadata(img)['source_url'], 'http://media.eol.org/content/2012/08/24/08/75619_orig.jpg')
def test_Senckenberg(self): from pytsammalex.image_providers.senckenberg import Senckenberg prov, img, data = self._provider_img_data(Senckenberg) with patch('pytsammalex.util.requests', MockRequests(text=data['metadata'])): self.assertEqual( prov.metadata(img)['source_url'], 'http://www.westafricanplants.senckenberg.de/images/pictures/ficus_polita_img_04024_ralfbiechele_722_fc6e25.jpg')
def test_Wikimedia(self): from pytsammalex.image_providers.wikimedia import Wikimedia prov, img, data = self._provider_img_data(Wikimedia) with patch('pytsammalex.util.requests', MockRequests(content=data['metadata'])): self.assertEqual( prov.metadata(img)['source_url'], 'https://upload.wikimedia.org/wikipedia/commons/1/1d/Alcelaphus_caama.jpg')
def test_Zimbabweflora(self): from pytsammalex.image_providers.zimbabweflora import Zimbabweflora prov, img, data = self._provider_img_data(Zimbabweflora) with patch('pytsammalex.util.requests', MockRequests(text=data['metadata'])): self.assertEqual( prov.metadata(img)['source_url'], 'http://www.zimbabweflora.co.zw/speciesdata/images/10/100760-2.jpg')
def test_DataProvider(self): from pytsammalex.data_providers.base import DataProvider prov = DataProvider(self.tmp_path()) self.assertEqual(prov.name, 'dataprovider') with patch('pytsammalex.util.requests', MockRequests()): prov = DataProvider(self.tmp_path()) self.assertEqual(prov.get(None, type_='json')['a'], 'b') self.assertEqual(prov.get(None, type_='xml').tag, 'a') self.assertIsInstance(prov.get(None), MockResponse) self.assertRaises(NotImplementedError, prov.identify, None) self.assertRaises(NotImplementedError, prov.metadata, None) self.assertRaises(NotImplementedError, prov.update, None, None) self.assertIsNone(prov.cached_metadata(None, None)) prov.items[1] = 1 self.assertEqual(prov.cached_metadata(1, None), 1)
def test_gbif(tmpdir): data = fixtures('data_providers', 'gbif') with patch('pytsammalex.util.requests', MockRequests(json=[data['identify'], data['metadata']])): prov = GBIF(Path(create_repos(tmpdir))) taxon = {'id': 'pantheraleo', 'name': 'Panthera leo'} prov.update_taxon(taxon) assert (taxon == { 'gbif_id': 5219404, 'id': 'pantheraleo', 'name': 'Panthera leo', 'class': 'Mammalia', 'family': 'Felidae', 'genus': 'Panthera', 'kingdom': 'Animalia', 'order': 'Carnivora', 'phylum': 'Chordata', 'taxonRank': 'species' })
def test_Gbif(self): from pytsammalex.data_providers.gbif import GBIF data = fixtures('data_providers', 'gbif') with patch('pytsammalex.util.requests', MockRequests(json=[data['identify'], data['metadata']])): prov = GBIF(create_repos(self.tmp_path())) taxon = {'id': 'pantheraleo', 'name': 'Panthera leo'} prov.update_taxon(taxon) self.assertEqual( taxon, { 'gbif_id': 5219404, 'id': 'pantheraleo', 'name': 'Panthera leo', 'class': 'Mammalia', 'family': 'Felidae', 'genus': 'Panthera', 'kingdom': 'Animalia', 'order': 'Carnivora', 'phylum': 'Chordata', 'taxonRank': 'species' })
def test_data_provider(tmpdir): prov = DataProvider(Path(tmpdir)) assert (prov.name == 'dataprovider') with patch('pytsammalex.util.requests', MockRequests()): prov = DataProvider(Path(tmpdir)) assert (prov.get(None, type_='json')['a'] == 'b') assert (prov.get(None, type_='xml').tag == 'a') assert (isinstance(prov.get(None), MockResponse)) with pytest.raises(NotImplementedError): prov.identify(None) with pytest.raises(NotImplementedError): prov.metadata(None) with pytest.raises(NotImplementedError): prov.update(None, None) assert (prov.cached_metadata(None, None) is None) prov.items[1] = 1 assert (prov.cached_metadata(1, None) == 1)
def test_image_provider_retrieve(tmpdir): repos = create_repos(tmpdir) fname = tmpdir.join('test') with fname.open('w', encoding='utf8') as fp: fp.write('test') class TestProvider(ImageProvider): def identify(self, name): pass def __init__(self, md): self._md = md ImageProvider.__init__(self, repos) def metadata(self, item): return self._md assert (TestProvider({}).retrieve(None, None, None, None) is None) staged_image = Staged_images.fromdict({'id': 'abc', 'taxa__id': 'abc'}) prov = TestProvider({'source_url': fname}) with pytest.raises(ValueError): prov.retrieve(staged_image, None, [md5(fname)], None) cdstar = MagicMock(create=MagicMock(return_value=[(None, None, MOCK_CDSTAR_OBJECT)])) prov = TestProvider({'source_url': 'x'}) with patch('pytsammalex.util.requests', MockRequests()): with MediaCatalog('media.json', repos=Path(repos)) as mcat: prov.retrieve(staged_image, cdstar, [], mcat) assert (cdstar.create.called is True) assert (len(MediaCatalog('media.json', repos=Path(repos))) == 1)
def test_eol(): prov, img, data = _provider_img_data(Eol) with patch('pytsammalex.util.requests', MockRequests(json=data['metadata'])): assert (prov.metadata(img)['source_url'] == 'http://media.eol.org/content/2012/08/24/08/75619_orig.jpg')