コード例 #1
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(inspire_app):
    data = faker.record("dat")
    record = InspireRecord.create_or_update(data)
    assert type(record) == DataRecord
    assert record.pid_type == "dat"

    data_update = {"deleted": True}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == DataRecord
    assert record.pid_type == "dat"
コード例 #2
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(base_app, db, es):
    data = faker.record("job")
    record = InspireRecord.create_or_update(data)
    assert type(record) == JobsRecord
    assert record.pid_type == "job"

    data_update = {"description": "Updated"}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == JobsRecord
    assert record.pid_type == "job"
コード例 #3
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(base_app, db, es):
    data = faker.record("jou")
    record = InspireRecord.create_or_update(data)
    assert type(record) == JournalsRecord
    assert record.pid_type == "jou"

    data_update = {"short_title": "Updated"}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == JournalsRecord
    assert record.pid_type == "jou"
コード例 #4
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(base_app, db, es):
    data = faker.record("aut")
    record = InspireRecord.create_or_update(data)
    assert type(record) == AuthorsRecord
    assert record.pid_type == "aut"

    data_update = {"name": {"value": "UPDATED"}}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == AuthorsRecord
    assert record.pid_type == "aut"
コード例 #5
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(inspire_app):
    data = faker.record("con")
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, ConferencesRecord)
    assert record.pid_type == "con"

    data_update = {"titles": [{"title": "UPDATED"}]}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, ConferencesRecord)
    assert record.pid_type == "con"
コード例 #6
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(base_app, db, es):
    data = faker.record("exp")
    record = InspireRecord.create_or_update(data)
    assert type(record) == ExperimentsRecord
    assert record.pid_type == "exp"

    data_update = {"deleted": True}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == ExperimentsRecord
    assert record.pid_type == "exp"
コード例 #7
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(base_app, db, es):
    data = faker.record("lit")
    record = InspireRecord.create_or_update(data)
    assert type(record) == LiteratureRecord
    assert record.pid_type == "lit"

    data_update = {"titles": [{"title": "UPDATED"}]}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == LiteratureRecord
    assert record.pid_type == "lit"
コード例 #8
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(inspire_app):
    data = faker.record("job")
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, JobsRecord)
    assert record.pid_type == "job"

    data_update = {"description": "Updated"}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, JobsRecord)
    assert record.pid_type == "job"
コード例 #9
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(inspire_app):
    data = faker.record("exp", with_control_number=True)
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, ExperimentsRecord)
    assert record.pid_type == "exp"

    data_update = {"deleted": True}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, ExperimentsRecord)
    assert record.pid_type == "exp"
コード例 #10
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(
        inspire_app):
    data = faker.record("ins", with_control_number=True)
    record = InspireRecord.create_or_update(data)
    assert type(record) == InstitutionsRecord
    assert record.pid_type == "ins"

    data_update = {"deleted": True}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert type(record) == InstitutionsRecord
    assert record.pid_type == "ins"
コード例 #11
0
def test_create_or_update_record_from_db_depending_on_its_pid_type(
        inspire_app):
    data = faker.record("jou")
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, JournalsRecord)
    assert record.pid_type == "jou"

    data_update = {"short_title": "Updated"}
    data.update(data_update)
    record = InspireRecord.create_or_update(data)
    assert isinstance(record, JournalsRecord)
    assert record.pid_type == "jou"
コード例 #12
0
ファイル: test_orcid_utils.py プロジェクト: tsgit/inspirehep
def author_in_isolated_app(inspire_app):
    record = {
        "$schema":
        "http://localhost:5000/schemas/records/authors.json",
        "_collections": ["Authors"],
        "control_number":
        123456789,  # FIXME remove when there is an easy way to insert new records
        "ids": [
            {
                "schema": "INSPIRE BAI",
                "value": "J.Smith.1"
            },
            {
                "schema": "ORCID",
                "value": "0000-0002-1825-0097"
            },
        ],
        "name": {
            "value": "Smith, John"
        },
    }

    assert validate(record, "authors") is None

    record = InspireRecord.create_or_update(record)
    yield record["control_number"]
コード例 #13
0
ファイル: test_orcid_utils.py プロジェクト: tsgit/inspirehep
def test_get_literature_recids_for_orcid_raises_if_two_authors_are_found(
        inspire_app, datadir):
    data = json.loads((datadir / "1061000.json").read_text())
    create_record("aut", data=data)
    record = InspireRecord.get_record_by_pid_value(1061000, pid_type="aut")
    record["control_number"] = 1061001

    with pytest.raises(PIDAlreadyExists):
        record = InspireRecord.create_or_update(record)
コード例 #14
0
ファイル: test_orcid_utils.py プロジェクト: tsgit/inspirehep
def test_get_literature_recids_for_orcid_still_works_if_author_has_no_ids(
        inspire_app, datadir):
    data = json.loads((datadir / "1061000.json").read_text())
    create_record("aut", data=data)
    record = InspireRecord.get_record_by_pid_value(1061000, pid_type="aut")
    del record["ids"]
    record = InspireRecord.create_or_update(record)

    with pytest.raises(NoResultFound):
        get_literature_recids_for_orcid("0000-0003-4792-9178")
コード例 #15
0
def test_create_or_update_when_redirection_enabled_updates_original_record(
        inspire_app):
    rec_to_delete = create_record("lit")
    rec_which_deletes = create_record(
        "lit", data={"deleted_records": [rec_to_delete["self"]]})

    expected_title = {"title": "New title"}

    data = dict(
        LiteratureRecord.get_record_by_pid_value(
            rec_to_delete["control_number"], original_record=True))
    data["titles"][0] = expected_title
    InspireRecord.create_or_update(data)

    deleted_rec = LiteratureRecord.get_record_by_pid_value(
        rec_to_delete["control_number"], original_record=True)
    new_rec = LiteratureRecord.get_record_by_pid_value(
        rec_which_deletes["control_number"])
    assert deleted_rec["titles"][0] == expected_title
    assert new_rec["titles"][0] == rec_which_deletes["titles"][0]
コード例 #16
0
ファイル: test_orcid_utils.py プロジェクト: tsgit/inspirehep
def test_get_literature_recids_for_orcid_still_works_if_author_has_no_orcid_id(
        inspire_app, datadir):
    data = json.loads((datadir / "1061000.json").read_text())
    create_record("aut", data=data)
    record = InspireRecord.get_record_by_pid_value(1061000, pid_type="aut")
    record["ids"] = [{
        "schema": "INSPIRE BAI",
        "value": "Maurizio.Martinelli.1"
    }]
    record = InspireRecord.create_or_update(record)

    with pytest.raises(NoResultFound):
        get_literature_recids_for_orcid("0000-0003-4792-9178")
コード例 #17
0
ファイル: cli.py プロジェクト: hanadikaleel/inspirehep
def _create_record(data, save_to_file=False):
    control_number = data["control_number"]

    click.echo(f"Creating record {control_number}.")

    record = InspireRecord.create_or_update(data)

    db.session.commit()
    record.index(delay=False)
    message = (f"Record created uuid:{record.id} with "
               f"pid:{control_number} has been created.")
    click.echo(click.style(message, fg="green"))

    if save_to_file:
        pid_type = PidStoreBase.get_pid_type_from_schema(data["$schema"])
        endpoint = PidStoreBase.get_endpoint_from_pid_type(pid_type)
        file_path = os.path.join(
            f"data/records/{endpoint}/{control_number}.json")
        click.echo(click.style(f"Writing to {file_path}", fg="green"))
        with open(file_path, "w+") as file:
            file.write(orjson.dumps(data))