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
Beispiel #4
0
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()