示例#1
0
def test_admin(app):
    """Test Flask-Admin interace."""
    admin = Admin(app, name="Test")

    assert "model" in set_adminview
    assert "modelview" in set_adminview

    # Register both models in admin
    model = set_adminview.pop("model")
    view = set_adminview.pop("modelview")
    admin.add_view(view(model, db.session, **set_adminview))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}
    assert "OAI-PMH" in menu_items
    assert menu_items["OAI-PMH"].is_category()

    submenu_items = {
        str(item.name): item
        for item in menu_items["OAI-PMH"].get_children()
    }
    assert "Sets" in submenu_items
    assert isinstance(submenu_items["Sets"], menu.MenuView)

    # Create a test set.
    with app.app_context():
        test_set = OAISet(
            id=1,
            spec="test",
            name="test_name",
            description="some test description",
            search_pattern="title_statement.title:Test0",
        )
        db.session.add(test_set)
        db.session.commit()

    with app.test_request_context():
        index_view_url = url_for("oaiset.index_view")
        delete_view_url = url_for("oaiset.delete_view")
        detail_view_url = url_for("oaiset.details_view", id=1)

    with app.test_client() as client:
        # List index view and check record is there.
        res = client.get(index_view_url)
        assert res.status_code == 200

        # Deletion is forbiden.
        res = client.post(delete_view_url,
                          data={"id": 1},
                          follow_redirects=True)
        assert res.status_code == 200

        # View the deleted record.
        res = client.get(detail_view_url)
        assert res.status_code == 200
        assert 1 == OAISet.query.count()
示例#2
0
def test_admin(app):
    """Test Flask-Admin interace."""
    admin = Admin(app, name='Test')

    assert 'model' in set_adminview
    assert 'modelview' in set_adminview

    # Register both models in admin
    model = set_adminview.pop('model')
    view = set_adminview.pop('modelview')
    admin.add_view(view(model, db.session, **set_adminview))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}
    assert 'OAI-PMH' in menu_items
    assert menu_items['OAI-PMH'].is_category()

    submenu_items = {
        str(item.name): item
        for item in menu_items['OAI-PMH'].get_children()
    }
    assert 'Sets' in submenu_items
    assert isinstance(submenu_items['Sets'], menu.MenuView)

    # Create a test set.
    with app.app_context():
        test_set = OAISet(id=1,
                          spec='test',
                          name='test_name',
                          description='some test description',
                          search_pattern='test search')
        db.session.add(test_set)
        db.session.commit()

    with app.test_request_context():
        index_view_url = url_for('oaiset.index_view')
        delete_view_url = url_for('oaiset.delete_view')
        detail_view_url = url_for('oaiset.details_view', id=1)

    with app.test_client() as client:
        # List index view and check record is there.
        res = client.get(index_view_url)
        assert res.status_code == 200

        # Deletion is forbiden.
        res = client.post(delete_view_url,
                          data={'id': 1},
                          follow_redirects=True)
        assert res.status_code == 200

        # View the deleted record.
        res = client.get(detail_view_url)
        assert res.status_code == 200
        assert 1 == OAISet.query.count()
示例#3
0
def test_admin(app):
    """Test Flask-Admin interace."""
    admin = Admin(app, name='Test')

    assert 'model' in set_adminview
    assert 'modelview' in set_adminview

    # Register both models in admin
    model = set_adminview.pop('model')
    view = set_adminview.pop('modelview')
    admin.add_view(view(model, db.session, **set_adminview))

    # Check if generated admin menu contains the correct items
    menu_items = {str(item.name): item for item in admin.menu()}
    assert 'OAI-PMH' in menu_items
    assert menu_items['OAI-PMH'].is_category()

    submenu_items = {
        str(item.name): item for item in menu_items['OAI-PMH'].get_children()
    }
    assert 'Sets' in submenu_items
    assert isinstance(submenu_items['Sets'], menu.MenuView)

    # Create a test set.
    with app.app_context():
        test_set = OAISet(id=1,
                          spec='test',
                          name='test_name',
                          description='some test description',
                          search_pattern='test search')
        db.session.add(test_set)
        db.session.commit()

    with app.test_request_context():
        index_view_url = url_for('oaiset.index_view')
        delete_view_url = url_for('oaiset.delete_view')
        detail_view_url = url_for('oaiset.details_view', id=1)

    with app.test_client() as client:
        # List index view and check record is there.
        res = client.get(index_view_url)
        assert res.status_code == 200

        # Deletion is forbiden.
        res = client.post(
            delete_view_url, data={'id': 1}, follow_redirects=True)
        assert res.status_code == 200

        # View the deleted record.
        res = client.get(detail_view_url)
        assert res.status_code == 200
        assert 1 == OAISet.query.count()
示例#4
0
    OAISERVER_RECORD_INDEX='_all',
    OAISERVER_ID_PREFIX='oai:localhost:recid/',
    SECRET_KEY='CHANGE_ME',
    SQLALCHEMY_DATABASE_URI=os.getenv('SQLALCHEMY_DATABASE_URI',
                                      'sqlite:///app.db'),
)
InvenioDB(app)
InvenioRecords(app)
InvenioPIDStore(app)
search = InvenioSearch(app)
search.register_mappings('records', 'data')
InvenioIndexer(app)
InvenioOAIServer(app)

admin = Admin(app, name='Test')
model = set_adminview.pop('model')
view = set_adminview.pop('modelview')
admin.add_view(view(model, db.session, **set_adminview))


@app.cli.group()
def fixtures():
    """Initialize example data."""


@fixtures.command()
@click.option('-s', 'sets', type=click.INT, default=27)
@click.option('-r', 'records', type=click.INT, default=27)
def oaiserver(sets, records):
    """Initialize OAI-PMH server."""
    from invenio_db import db
示例#5
0
    OAISERVER_RECORD_INDEX='_all',
    OAISERVER_ID_PREFIX='oai:localhost:recid/',
    SECRET_KEY='CHANGE_ME',
    SQLALCHEMY_DATABASE_URI=os.getenv('SQLALCHEMY_DATABASE_URI',
                                      'sqlite:///app.db'),
)
FlaskCLI(app)
InvenioDB(app)
InvenioRecords(app)
InvenioPIDStore(app)
search = InvenioSearch(app)
InvenioIndexer(app)
InvenioOAIServer(app)

admin = Admin(app, name='Test')
model = set_adminview.pop('model')
view = set_adminview.pop('modelview')
admin.add_view(view(model, db.session, **set_adminview))


@app.cli.group()
def fixtures():
    """Initialize example data."""


@fixtures.command()
@click.option('-s', 'sets', type=click.INT, default=27)
@click.option('-r', 'records', type=click.INT, default=27)
def oaiserver(sets, records):
    """Initialize OAI-PMH server."""
    from invenio_db import db