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')
Example #2
0
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
Example #3
0
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'
        }
Example #6
0
def test_plugins():
    resolver = JSONResolver(plugins=['demo.simple'])
    assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
Example #7
0
def test_entry_point_group():
    resolver = JSONResolver(entry_point_group='espresso')
    assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
Example #8
0
def test_plugins():
    """Test the plugins loading."""
    resolver = JSONResolver(plugins=['demo.simple'])
    assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
Example #9
0
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'}
Example #10
0
def test_plugins():
    """Test the plugins loading."""
    resolver = JSONResolver(plugins=['demo.simple'])
    assert resolver.resolve('http://localhost:4000/test') == {'test': 'test'}
Example #11
0
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'}
Example #12
0
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
    }