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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"]
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)
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")
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]
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")
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))