From 19b11afa8bc5f5efe4cbd274ff24aababa560cb2 Mon Sep 17 00:00:00 2001 From: Jonatan Skogsfors Date: Wed, 8 Oct 2025 17:00:31 +0200 Subject: [PATCH] Wrapping delivery note Part of #6 --- src/delivery_metadata/delivery_metadata.py | 4 ++ tests/test_parse_shark_data.py | 74 ++++++++++++++-------- 2 files changed, 53 insertions(+), 25 deletions(-) diff --git a/src/delivery_metadata/delivery_metadata.py b/src/delivery_metadata/delivery_metadata.py index bfdd598..07e1c4c 100644 --- a/src/delivery_metadata/delivery_metadata.py +++ b/src/delivery_metadata/delivery_metadata.py @@ -46,6 +46,10 @@ def __init__(self, data_holder: PolarsDataHolder | None = None): def data(self): return self._data_holder.data + @property + def delivery_note(self): + return self._data_holder.delivery_note.data + @property def fields(self): return self._fields diff --git a/tests/test_parse_shark_data.py b/tests/test_parse_shark_data.py index fe55a7c..84751b1 100644 --- a/tests/test_parse_shark_data.py +++ b/tests/test_parse_shark_data.py @@ -6,6 +6,24 @@ from delivery_metadata import DeliveryMetadata +def _write_data_to_package_folder( + given_shark_data: pl.DataFrame, + given_delivery_note_data: dict[str, str], + root_dir: Path, +) -> Path: + package_path = root_dir / "SHARK_Phytoplankton" + package_path.mkdir() + given_shark_data.write_csv(package_path / "shark_data.txt", separator="\t") + processed_data_path = package_path / "processed_data" + processed_data_path.mkdir() + given_shark_data.write_csv(processed_data_path / "data.txt", separator="\t") + delivery_note_path = processed_data_path / "delivery_note.txt" + delivery_note_path.write_text( + "\n".join(f"{key}: {value}" for key, value in given_delivery_note_data.items()) + ) + return package_path + + def test_parse_unpacked_folder( tmp_path, mock_adm_config_paths, @@ -19,19 +37,15 @@ def test_parse_unpacked_folder( "ColumnB": ["2.1", "2.2", "2.3"], } ) - given_delivery_note = """ -datatyp: Phytoplankton -format: Phytoplankton:PP_SMHI -""" - - # Given path to data - package_path = tmp_path / "SHARK_Phytoplankton" - package_path.mkdir() - processed_data_path = package_path / "processed_data" - processed_data_path.mkdir() - given_shark_data.write_csv(processed_data_path / "data.txt", separator="\t") - delivery_note_path = processed_data_path / "delivery_note.txt" - delivery_note_path.write_text(given_delivery_note) + given_delivery_note_data = { + "datatyp": "Phytoplankton", + "format": "Phytoplankton:PP_SMHI", + } + + # Given path to package folder + package_path = _write_data_to_package_folder( + given_shark_data, given_delivery_note_data, tmp_path + ) # When parsing data using path metadata = DeliveryMetadata.from_shark_package(package_path) @@ -42,6 +56,13 @@ def test_parse_unpacked_folder( # And it is identical to the original data for the columns in the original data assert metadata.data[given_shark_data.columns].equals(given_shark_data) + # And metadata holds delivery note + assert metadata.delivery_note + + # And the values in the delivery note are identical to the original + assert metadata.delivery_note["DTYPE"] == given_delivery_note_data["datatyp"] + assert metadata.delivery_note["FORMAT"] == given_delivery_note_data["format"] + def test_parse_zipped_folder( tmp_path, @@ -57,20 +78,16 @@ def test_parse_zipped_folder( "ColumnB": ["2.1", "2.2", "2.3"], } ) - given_delivery_note = """ -datatyp: Phytoplankton -format: Phytoplankton:PP_SMHI -""" - # Given path to data - package_path = tmp_path / "SHARK_Phytoplankton" - package_path.mkdir() - given_shark_data.write_csv(package_path / "shark_data.txt", separator="\t") + given_delivery_note_data = { + "datatyp": "Phytoplankton", + "format": "Phytoplankton:PP_SMHI", + } - processed_data_path = package_path / "processed_data" - processed_data_path.mkdir() - delivery_note_path = processed_data_path / "delivery_note.txt" - delivery_note_path.write_text(given_delivery_note) + # Given path to package folder + package_path = _write_data_to_package_folder( + given_shark_data, given_delivery_note_data, tmp_path + ) zipped_package_path = Path(shutil.make_archive(package_path, "zip", package_path)) @@ -82,3 +99,10 @@ def test_parse_zipped_folder( # And it is identical to the original data for the columns in the original data assert metadata.data[given_shark_data.columns].equals(given_shark_data) + + # And metadata holds delivery note + assert metadata.delivery_note + + # And the values in the delivery note are identical to the original + assert metadata.delivery_note["DTYPE"] == given_delivery_note_data["datatyp"] + assert metadata.delivery_note["FORMAT"] == given_delivery_note_data["format"]