Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions package/pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[pytest]
testpaths = tests/unit
pythonpath = src
Original file line number Diff line number Diff line change
@@ -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)
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)