diff --git a/package/pytest.ini b/package/pytest.ini new file mode 100644 index 00000000..e5fab62a --- /dev/null +++ b/package/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +testpaths = tests/unit +pythonpath = src diff --git a/package/src/pyaslreport/tests/test_package.py b/package/tests/unit/test_package_api.py similarity index 63% rename from package/src/pyaslreport/tests/test_package.py rename to package/tests/unit/test_package_api.py index fda43d33..b5d57fea 100644 --- a/package/src/pyaslreport/tests/test_package.py +++ b/package/tests/unit/test_package_api.py @@ -1,38 +1,50 @@ +from unittest.mock import MagicMock, patch + import pytest -from unittest.mock import patch, MagicMock -from .main import get_bids_metadata -# filepath: /home/ibrahim/MyPc/Projects/GSoC/ASL-Parameter-Generator/package/src/pyaslreport/test_main.py +from pyaslreport.main import get_bids_metadata + def test_get_bids_metadata_success(): data = {"modality": "asl", "dicom_dir": "/fake/dir"} fake_header = MagicMock() fake_sequence = MagicMock() fake_sequence.extract_bids_metadata.return_value = ("meta", "context") + with patch("pyaslreport.main.get_dicom_header", return_value=fake_header), \ patch("pyaslreport.main.get_sequence", return_value=fake_sequence): result = get_bids_metadata(data) - assert result == ("meta", "context") - fake_sequence.extract_bids_metadata.assert_called_once() + + assert result == ("meta", "context") + fake_sequence.extract_bids_metadata.assert_called_once() + def test_get_bids_metadata_no_dicom_dir(): data = {"modality": "asl"} + with pytest.raises(TypeError): get_bids_metadata(data) + def test_get_bids_metadata_no_sequence(): data = {"modality": "asl", "dicom_dir": "/fake/dir"} fake_header = MagicMock() + with patch("pyaslreport.main.get_dicom_header", return_value=fake_header), \ - patch("pyaslreport.main.get_sequence", return_value=None): + patch("pyaslreport.main.get_sequence", side_effect=ValueError("No ASL sequence class found that matches the DICOM header")): with pytest.raises(ValueError) as exc: get_bids_metadata(data) - assert "No matching sequence found" in str(exc.value) + + assert "No ASL sequence class found" in str(exc.value) + def test_get_bids_metadata_invalid_modality(): data = {"modality": None, "dicom_dir": "/fake/dir"} fake_header = MagicMock() + with patch("pyaslreport.main.get_dicom_header", return_value=fake_header), \ - patch("pyaslreport.main.get_sequence", return_value=None): - with pytest.raises(ValueError): - get_bids_metadata(data) \ No newline at end of file + patch("pyaslreport.main.get_sequence", side_effect=ValueError("Unsupported modality: None")): + with pytest.raises(ValueError) as exc: + get_bids_metadata(data) + + assert "Unsupported modality" in str(exc.value)