Beispiel #1
0
def test_journals_create_with_invalid_data(inspire_app):
    data = faker.record("jou", with_control_number=True)
    data["invalid_key"] = "should throw an error"
    record_control_number = str(data["control_number"])

    with pytest.raises(ValidationError):
        JournalsRecord.create(data)

    record_pid = PersistentIdentifier.query.filter_by(
        pid_value=record_control_number).one_or_none()
    assert record_pid is None
Beispiel #2
0
def test_journals_create_with_existing_control_number(inspire_app):
    data = faker.record("jou", with_control_number=True)
    existing_object_uuid = uuid.uuid4()

    create_pidstore(
        object_uuid=existing_object_uuid,
        pid_type="jou",
        pid_value=data["control_number"],
    )

    with pytest.raises(PIDAlreadyExists):
        JournalsRecord.create(data)
Beispiel #3
0
def test_cn_redirection_works_for_journals(inspire_app):
    redirected_record = create_record("jou")
    record = create_record(
        "jou", data={"deleted_records": [redirected_record["self"]]})

    original_record = JournalsRecord.get_uuid_from_pid_value(
        redirected_record["control_number"], original_record=True)
    new_record = JournalsRecord.get_uuid_from_pid_value(
        redirected_record["control_number"])

    assert original_record != new_record
    assert original_record == redirected_record.id
    assert new_record == record.id
Beispiel #4
0
def test_create_record_from_db_depending_on_its_pid_type(inspire_app):
    data = faker.record("jou")
    record = InspireRecord.create(data)
    assert type(record) == JournalsRecord
    assert record.pid_type == "jou"

    record = JournalsRecord.create(data)
    assert type(record) == JournalsRecord
    assert record.pid_type == "jou"
Beispiel #5
0
def test_journals_create_or_update_with_new_record(inspire_app):
    data = faker.record("jou")
    record = JournalsRecord.create_or_update(data)

    control_number = str(record["control_number"])
    record_db = RecordMetadata.query.filter_by(id=record.id).one()

    assert record == record_db.json

    record_pid = PersistentIdentifier.query.filter_by(
        pid_type="jou", pid_value=str(control_number)).one()

    assert record.model.id == record_pid.object_uuid
    assert control_number == record_pid.pid_value
Beispiel #6
0
def test_journals_serializer_should_serialize_whole_basic_record():
    schema = JournalsElasticSearchSchema()

    data = faker.record("jou")
    expected_result = deepcopy(data)
    title_suggest = {
        "input": [data["journal_title"]["title"], data["short_title"]]
    }
    expected_result["title_suggest"] = title_suggest

    conference = JournalsRecord(data)
    result = schema.dump(conference).data

    assert result == expected_result
Beispiel #7
0
def test_journals_create_or_update_with_existing_record(inspire_app):
    data = faker.record("jou", with_control_number=True)
    record = JournalsRecord.create(data)

    assert data["control_number"] == record["control_number"]

    data_update = {"public_notes": [{"value": "UPDATED"}]}
    data.update(data_update)

    record_updated = JournalsRecord.create_or_update(data)
    control_number = str(record_updated["control_number"])

    assert record["control_number"] == record_updated["control_number"]

    record_updated_db = RecordMetadata.query.filter_by(
        id=record_updated.id).one()

    assert data == record_updated_db.json

    record_updated_pid = PersistentIdentifier.query.filter_by(
        pid_type="jou", pid_value=str(control_number)).one()

    assert record_updated.model.id == record_updated_pid.object_uuid
    assert control_number == record_updated_pid.pid_value
Beispiel #8
0
def test_indexer_deletes_record_from_es(inspire_app, datadir):
    def assert_record_is_deleted_from_es():
        current_search.flush_and_refresh("records-journals")
        expected_records_count = 0
        record_lit_es = JournalsSearch().get_record(str(record.id)).execute().hits
        assert expected_records_count == len(record_lit_es)

    data = orjson.loads((datadir / "1213103.json").read_text())
    record = JournalsRecord.create(data)
    db.session.commit()

    record.delete()
    db.session.commit()

    retry_until_pass(assert_record_is_deleted_from_es)
Beispiel #9
0
def test_journals_serializer_populates_title_suggest():
    schema = JournalsElasticSearchSchema()
    data = {"title_variants": ["title_variant1", "title_variant2"]}

    data = faker.record("jou", data)

    expected_result = {
        "input": [
            data["journal_title"]["title"],
            data["short_title"],
            data["title_variants"][0],
            data["title_variants"][1],
        ]
    }
    institution = JournalsRecord(data)
    result = schema.dump(institution).data["title_suggest"]

    assert result == expected_result
Beispiel #10
0
def test_populate_title_suggest_with_all_inputs():
    data = {
        "$schema": "http://localhost:5000/schemas/records/journals.json",
        "journal_title": {
            "title": "The Journal of High Energy Physics (JHEP)"
        },
        "short_title": "JHEP",
        "title_variants": ["JOURNAL OF HIGH ENERGY PHYSICS"],
    }
    record = JournalsRecord(faker.record("jou", data))
    marshmallow_schema = JournalsElasticSearchSchema()
    result = marshmallow_schema.dump(record).data["title_suggest"]
    expected = {
        "input": [
            "The Journal of High Energy Physics (JHEP)",
            "JHEP",
            "JOURNAL OF HIGH ENERGY PHYSICS",
        ]
    }

    assert expected == result
Beispiel #11
0
def test_aut_citation_count_property_blows_up_on_wrong_pid_type(inspire_app):
    data = faker.record("jou")
    record = JournalsRecord.create(data)

    with pytest.raises(AttributeError):
        record.citation_count
Beispiel #12
0
def test_subclasses_for_journals():
    expected = {"jou": JournalsRecord}
    assert expected == JournalsRecord.get_subclasses()