Ejemplo n.º 1
0
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'
        })
Ejemplo n.º 2
0
    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'
                })
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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)
Ejemplo n.º 6
0
    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'
                })
Ejemplo n.º 7
0
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')
Ejemplo n.º 10
0
    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')
Ejemplo n.º 11
0
    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')
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
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'
        })
Ejemplo n.º 14
0
    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'
                })
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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')