def test_jsonresolver_no_taxonomy_term(app): assert app.config.get('TAXONOMY_SERVER_NAME') == 'taxonomy-server.com' resolver = JSONResolver() resolver.pm.register(jsonresolver, 'taxonomies-resolver') with pytest.raises(ValueError, match='The taxonomy term does not exist.'): resolver.resolve( 'https://taxonomy-server.com/api/taxonomies/code/slug')
def test_plugin_lazy_execution_hooks(): """Test the lazy evaluation of loaded plugin through hooks.""" # Plugin code should be called (i.e. raise exception) on resolve method resolver = JSONResolver(plugins=['demo.raising_hook']) with pytest.raises(HookRegistrationDetected) as exc_info: resolver.resolve('http://localhost:4000/test') assert exc_info.type is HookRegistrationDetected # Same as above but loaded using entry point resolver = JSONResolver(entry_point_group='raising_hook') with pytest.raises(HookRegistrationDetected) as exc_info: resolver.resolve('http://localhost:4000/test') assert exc_info.type is HookRegistrationDetected
def test_referenced_taxonomy_term(db, root_taxonomy, mkt): """Get terms listassocitated with this taxonomy.""" leaf = root_taxonomy.create_term(slug="leaf") nested = leaf.create_term(slug="nested") db.session.refresh(root_taxonomy) db.session.refresh(leaf) db.session.refresh(nested) jsonRes = JSONResolver(entry_point_group='invenio_records.jsonresolver') document = jsonRes.resolve( "http://taxonomy-server.com/api/taxonomies/root/leaf") assert document == { 'descendants_count': 1.0, 'id': leaf.id, 'links': { 'parent': 'http://localhost/taxonomies/root/', 'parent_tree': 'http://localhost/taxonomies/root/?drilldown=True', 'self': 'http://localhost/taxonomies/root/leaf/', 'tree': 'http://localhost/taxonomies/root/leaf/?drilldown=True' }, 'path': '/leaf', 'slug': 'leaf', 'level': 1 }
def test_jsonresolver_before_signal(app): assert app.config.get('TAXONOMY_SERVER_NAME') == 'taxonomy-server.com' def before(source, code=None, slug=None, **kwargs): return {'code': code, 'slug': slug} before_taxonomy_jsonresolve.connect(before) resolver = JSONResolver() resolver.pm.register(jsonresolver, 'taxonomies-resolver') assert resolver.resolve( 'https://taxonomy-server.com/api/taxonomies/code/slug') == { 'code': 'code', 'slug': 'slug' }
def test_plugins(): resolver = JSONResolver(plugins=['demo.simple']) assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
def test_entry_point_group(): resolver = JSONResolver(entry_point_group='espresso') assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
def test_plugins(): """Test the plugins loading.""" resolver = JSONResolver(plugins=['demo.simple']) assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
def test_entry_point_group(): """Test the entry point group loading.""" resolver = JSONResolver(entry_point_group='espresso') assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
def test_redis(db, root_taxonomy, mkt): """Get terms listassocitated with this taxonomy.""" leaf = root_taxonomy.create_term(slug="leaf") nested = leaf.create_term(slug="nested") db.session.refresh(root_taxonomy) db.session.refresh(leaf) db.session.refresh(nested) jsonRes = JSONResolver(entry_point_group='invenio_records.jsonresolver') document = jsonRes.resolve("http://taxonomy-server.com/api/taxonomies/root/leaf") assert document == { 'descendants_count': 1.0, 'id': leaf.id, 'links': {'parent': 'http://localhost/taxonomies/root/', 'parent_tree': 'http://localhost/taxonomies/root/?drilldown=True', 'self': 'http://localhost/taxonomies/root/leaf/', 'tree': 'http://localhost/taxonomies/root/leaf/?drilldown=True'}, 'path': '/leaf', 'slug': 'leaf', 'level': 1 } # change the document directly in the database leaf.extra_data = { 'title': 'a title' } db.session.add(leaf) db.session.commit() # the document must be the original one - coming from redis document = jsonRes.resolve("http://taxonomy-server.com/api/taxonomies/root/leaf") assert document == { 'descendants_count': 1.0, 'id': leaf.id, 'links': {'parent': 'http://localhost/taxonomies/root/', 'parent_tree': 'http://localhost/taxonomies/root/?drilldown=True', 'self': 'http://localhost/taxonomies/root/leaf/', 'tree': 'http://localhost/taxonomies/root/leaf/?drilldown=True'}, 'path': '/leaf', 'slug': 'leaf', 'level': 1 } # change the document via api current_flask_taxonomies.update_term(root_taxonomy, leaf, { 'extra_data': {'title': 'a title'} }) document = jsonRes.resolve("http://taxonomy-server.com/api/taxonomies/root/leaf") assert document == { 'descendants_count': 1.0, 'id': leaf.id, 'title': 'a title', 'links': {'parent': 'http://localhost/taxonomies/root/', 'parent_tree': 'http://localhost/taxonomies/root/?drilldown=True', 'self': 'http://localhost/taxonomies/root/leaf/', 'tree': 'http://localhost/taxonomies/root/leaf/?drilldown=True'}, 'path': '/leaf', 'slug': 'leaf', 'level': 1 }