From ffd5011ff7a4cbca45a60456cb60da4c293c95ab Mon Sep 17 00:00:00 2001 From: Francois Date: Wed, 12 Feb 2025 17:41:19 +0000 Subject: [PATCH] added order test --- bia-export/test/conftest.py | 52 ++++++++++++++++++++++++++++++ bia-export/test/test_api_export.py | 26 +++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/bia-export/test/conftest.py b/bia-export/test/conftest.py index 15336369..fb03a91f 100644 --- a/bia-export/test/conftest.py +++ b/bia-export/test/conftest.py @@ -2,6 +2,7 @@ import pytest from bia_test_data.data_to_api import add_objects_to_api, get_client_with_retries from bia_export.settings import Settings +from bia_shared_datamodels.uuid_creation import create_study_uuid from pathlib import Path import json import os @@ -30,3 +31,54 @@ def data_in_api(): private_client = get_client_with_retries(setttings.api_base_url) add_objects_to_api(private_client, object_list) + + + + +@pytest.fixture(scope="session") +def api_studies_in_expected_order(): + setttings = Settings() + + base_study = Path(__file__).parent / "input_data" / "study" / "S-BIADTEST" / "a2fdbd58-ee11-4cd9-bc6a-f3d3da7fff71.json" + + with open(base_study, "r") as object_file: + base_study_dict: dict = json.load(object_file) + + object_list = [] + + study_1 = base_study_dict.copy() | { + "accession_id": "S-BIADTEST1", + "uuid": str(create_study_uuid("S-BIADTEST111")), + "release_date": "2024-01-01" + } + object_list.append(study_1) + + study_2 = base_study_dict.copy() | { + "accession_id": "S-BIADTEST22", + "uuid": str(create_study_uuid("S-BIADTEST22")), + "release_date": "2024-01-01" + } + object_list.append(study_2) + + study_3 = base_study_dict.copy() | { + "accession_id": "S-BIADTEST333", + "uuid": str(create_study_uuid("S-BIADTEST333")), + "release_date": "2024-01-03" + } + object_list.append(study_3) + + + study_4 = base_study_dict.copy() | { + "accession_id": "S-BIADTEST4444", + "uuid": str(create_study_uuid("S-BIADTEST4444")), + "release_date": "2024-01-02" + } + object_list.append(study_4) + + private_client = get_client_with_retries(setttings.api_base_url) + + add_objects_to_api(private_client, object_list) + + expected_order_of_studies = [study_3, study_4, study_2, study_1] + + return expected_order_of_studies diff --git a/bia-export/test/test_api_export.py b/bia-export/test/test_api_export.py index aece56ed..725cfd01 100644 --- a/bia-export/test/test_api_export.py +++ b/bia-export/test/test_api_export.py @@ -1,5 +1,6 @@ from typer.testing import CliRunner from pathlib import Path +import pytest from bia_export.cli import ( app, DEFAULT_WEBSITE_STUDY_FILE_NAME, @@ -133,3 +134,28 @@ def test_cli_export_dataset_for_website_images(tmp_path: Path, data_in_api): json_expected = json.load(f) assert json_result == json_expected + + + +def test_cli_export_study_ordering(tmp_path: Path, api_studies_in_expected_order: list[dict]): + outfile = tmp_path.joinpath("bia-dataset-metadata.json").resolve() + + result = runner.invoke( + app, + [ + "website", + "study", + "-o", + outfile, + ], + ) + + assert result.exit_code == 0 + + expected_study_acc_id_order = [study["accession_id"] for study in api_studies_in_expected_order] + + with open(outfile, "r") as f: + json_result: dict = json.load(f) + + it = iter(json_result.keys()) + assert all(acc_id in it for acc_id in expected_study_acc_id_order) \ No newline at end of file