def test_init(): """Test extension initialization.""" app = Flask('testapp') ext = InvenioPIDRelations(app) assert 'invenio-pidrelations' in app.extensions app = Flask('testapp') ext = InvenioPIDRelations() assert 'invenio-pidrelations' not in app.extensions ext.init_app(app) assert 'invenio-pidrelations' in app.extensions
def base_app(instance_path): """Flask application fixture.""" app_ = Flask('testapp', instance_path=instance_path) app_.config.update( SECRET_KEY='SECRET_KEY', SQLALCHEMY_DATABASE_URI=os.environ.get('SQLALCHEMY_DATABASE_URI', 'sqlite:///test.db'), SQLALCHEMY_TRACK_MODIFICATIONS=True, TESTING=True, ) InvenioPIDStore(app_) InvenioDB(app_) InvenioPIDRelations(app_) InvenioRecords(app_) InvenioIndexer(app_) InvenioSearch(app_) Babel(app_) return app_
def base_app(request): """Basic Flask application.""" instance_path = tempfile.mkdtemp() app = Flask("testapp") app.config.update( MADMP_HOST_URL="https://test.invenio.cern.ch", MADMP_HOST_TITLE="Invenio", MADMP_FALLBACK_RECORD_CONVERTER=RDMRecordConverter(), SQLALCHEMY_DATABASE_URI=os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite://"), SQLALCHEMY_TRACK_MODIFICATIONS=False, ) Babel(app) InvenioConfigDefault(app) InvenioDB(app) InvenioRecords(app) InvenioPIDStore(app) InvenioPIDRelations(app) InvenioAccounts(app) InvenioAccess(app) InvenioIndexer(app) InvenioSearch(app) InvenioMaDMP(app) with app.app_context(): db_url = str(db.engine.url) if db_url != "sqlite://" and not database_exists(db_url): create_database(db_url) db.create_all() def teardown(): with app.app_context(): db_url = str(db.engine.url) db.session.close() if db_url != "sqlite://": drop_database(db_url) shutil.rmtree(instance_path) request.addfinalizer(teardown) app.test_request_context().push() return app
from marshmallow import Schema, fields from invenio_pidrelations import InvenioPIDRelations from invenio_pidrelations.contrib.versioning import PIDVersioning, \ versioning_blueprint from invenio_pidrelations.models import PIDRelation from invenio_pidrelations.serializers.schemas import PIDRelationsMixin from invenio_pidrelations.utils import resolve_relation_type_config # Create Flask application app = Flask(__name__, template_folder='.') app.config['TEMPLATES_AUTO_RELOAD'] = True InvenioDB(app) InvenioPIDStore(app) InvenioPIDRelations(app) app.register_blueprint(versioning_blueprint) InvenioIndexer(app) InvenioRecords(app) record_resolver = Resolver(pid_type='recid', object_type='rec', getter=Record.get_record) class SimpleRecordSchema(Schema, PIDRelationsMixin): """Tiny schema for our simple record.""" recid = fields.Str() title = fields.Str() body = fields.Str()