Skip to content

Commit

Permalink
Update existing tests along with tests for new functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
jermnelson committed Sep 16, 2022
1 parent 293b832 commit f2aa733
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 26 deletions.
3 changes: 0 additions & 3 deletions plugins/folio/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,8 @@ def get_bib_files(**kwargs):
task_instance.xcom_push(key="marc-file", value=bib_file_load["marc"])
task_instance.xcom_push(key="tsv-files", value=bib_file_load["tsv"])
task_instance.xcom_push(key="tsv-base", value=bib_file_load["tsv-base"])
<<<<<<< HEAD
task_instance.xcom_push(key="tsv-dates", value=bib_file_load["tsv-dates"])
=======
task_instance.xcom_push(key="mhld-file", value=bib_file_load.get("mhld"))
>>>>>>> a3d1b5a (Supports MHLD in bibs migration DAG)


def move_marc_files(*args, **kwargs) -> str:
Expand Down
1 change: 1 addition & 0 deletions plugins/folio/holdings.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def _add_identifiers(
instance_holdings_path = pathlib.Path(
f"{airflow}/migration/results/holdings-hrids-{dag_run_id}.json"
)

if instance_holdings_path.exists():
with instance_holdings_path.open() as fo:
instance_keys = json.load(fo)
Expand Down
23 changes: 21 additions & 2 deletions plugins/tests/test_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,33 @@ def test_move_marc_files(mock_file_system): # noqa
writer = MARCWriter(fo)
writer.write(marc_record)

sample_mhld_mrc = source_dir / "sample-mfld.mrc"
with sample_mhld_mrc.open("wb+") as mhld_fo:
marc_record = Record()
marc_record.add_field(Field(tag="001", data="a123456"))
marc_record.add_field(
Field(
tag="852",
indicators=[" ", " "],
subfields=["a", "CSt", "b", "GREEN", "c", "STACKS"],
)
)
writer = MARCWriter(mhld_fo)
writer.write(marc_record)

global messages
messages["bib-files-group"] = {"marc-file": str(sample_mrc)}
messages["bib-files-group"] = {
"marc-file": str(sample_mrc),
"mhld-file": str(sample_mhld_mrc),
}

move_marc_files(
task_instance=task_instance, airflow=airflow_path, source="symphony"
) # noqa
assert not (source_dir / "sample.mrc").exists()
assert (airflow_path / "migration/data/instances/sample.mrc").exists()
assert not (source_dir / "sample-mfld.mrc").exists()
assert (airflow_path / "migration/data/holdings/sample-mfld.mrc").exists()
messages = {}


Expand Down Expand Up @@ -250,7 +269,7 @@ def test_get_bib_files():
"marc": "sample.mrc",
"tsv": ["sample.public.tsv", "sample.circ.tsv"],
"tsv-base": "sample.tsv",
"tsv-dates": "sample.dates.tsv"
"tsv-dates": "sample.dates.tsv",
},
}
}
Expand Down
89 changes: 68 additions & 21 deletions plugins/tests/test_holdings.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import json
import pathlib

import pytest # noqa
import pydantic

Expand All @@ -12,39 +15,43 @@
mock_okapi_success,
mock_dag_run,
mock_okapi_variable,
mock_file_system,
MockFOLIOClient,
)


class MockHoldings(pydantic.BaseModel):
values = lambda *args, **kwargs: holdings # noqa


class MockMapper(pydantic.BaseModel):
# holdings_hrid_counter: int = 1
# holdings_hrid_prefix: str = "hold"
folio_client: MockFOLIOClient = MockFOLIOClient()


class MockHoldingsConfiguration(pydantic.BaseModel):
name = "holdings-transformer"


class MockHoldingsTransformer(pydantic.BaseModel):
holdings: MockHoldings = MockHoldings()
mapper: MockMapper = MockMapper()
task_configuration: MockHoldingsConfiguration = MockHoldingsConfiguration()
folio_client: MockFOLIOClient = MockFOLIOClient()


class MockTaskInstance(pydantic.BaseModel):
xcom_pull = lambda *args, **kwargs: {} # noqa
xcom_push = lambda *args, **kwargs: None # noqa


def test_electronic_holdings_missing_file(mock_dag_run, caplog): # noqa
electronic_holdings(
dag_run=mock_dag_run,
task_instance=MockTaskInstance(),
library_config={},
holdings_stem="holdings-transformers",
holdings_type_id="1asdfasdfasfd",
electronic_holdings_id="asdfadsfadsf"
electronic_holdings_id="asdfadsfadsf",
)
assert (
"Electronic Holdings /opt/airflow/migration/data/items/holdings-transformers.electronic.tsv does not exist"
in caplog.text
)
assert "Electronic Holdings /opt/airflow/migration/data/items/holdings-transformers.electronic.tsv does not exist" in caplog.text


def test_post_folio_holding_records(
Expand Down Expand Up @@ -86,23 +93,63 @@ def test_run_holdings_tranformer():
]


def test_add_identifiers():
task_instance = MockTaskInstance()
def _mock_setup_holdings_json(results_dir: pathlib.Path, dag_run_id: str):
holdings_result_file = (
results_dir / f"folio_holdings_{dag_run_id}_holdings-transformer.json"
)

with holdings_result_file.open("w+") as holdings_fo:
for holding in holdings:
holdings_fo.write(f"{json.dumps(holding)}\n")


def test_add_identifiers_missing_hrid_file(mock_file_system): # noqa
transformer = MockHoldingsTransformer()
dag_run_id = "manual_02022-09-16"
results_dir = mock_file_system[3]

_add_identifiers(task_instance, transformer)
_mock_setup_holdings_json(results_dir, dag_run_id)

# Test UUIDS
assert (
transformer.holdings.values()[0]["id"] == "3000ae83-e7ee-5e3c-ab0c-7a931a23a393"
)
assert (
transformer.holdings.values()[1]["id"] == "67360f4a-fb55-5c78-ad11-585e1a6c6aa4"
_add_identifiers(str(mock_file_system[0]), dag_run_id, transformer)

holdings_result_file = (
results_dir / f"folio_holdings_{dag_run_id}_holdings-transformer.json"
)
with holdings_result_file.open() as holdings_fo:
holdings_records = [json.loads(line) for line in holdings_fo.readlines()]

# Test UUIDS
assert holdings_records[0]["id"] == "3000ae83-e7ee-5e3c-ab0c-7a931a23a393"
assert holdings_records[1]["id"] == "67360f4a-fb55-5c78-ad11-585e1a6c6aa4"

# Test HRIDs
assert transformer.holdings.values()[0]["hrid"] == "ah123345_1"
assert transformer.holdings.values()[1]["hrid"] == "ah123345_2"
assert holdings_records[0]["hrid"] == "ah123345_1"
assert holdings_records[1]["hrid"] == "ah123345_2"

# Test _version
assert transformer.holdings.values()[0]["_version"] == 1
assert holdings_records[0]["_version"] == 1


def test_add_identifiers_existing_hrid(mock_file_system): # noqa
transformer = MockHoldingsTransformer()
dag_run_id = "manual_02022-09-16T22:49:19"
results_dir = mock_file_system[3]

_mock_setup_holdings_json(results_dir, dag_run_id)

# Mocks holdings_hrid file
holdings_hrid_file = results_dir / f"holdings-hrids-{dag_run_id}.json"

with holdings_hrid_file.open("w+") as fo:
fo.write(json.dumps({"xyzabc-def-ha": 2}))

_add_identifiers(str(mock_file_system[0]), dag_run_id, transformer)

holdings_result_file = (
results_dir / f"folio_holdings_{dag_run_id}_holdings-transformer.json"
)
with holdings_result_file.open() as holdings_fo:
holdings_records = [json.loads(line) for line in holdings_fo.readlines()]

# Test HRIDs
assert holdings_records[0]["hrid"] == "ah123345_3"

0 comments on commit f2aa733

Please sign in to comment.