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()
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()
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()
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
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