Skip to content
Merged
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
4 changes: 2 additions & 2 deletions isic_metadata/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ def validate_rcm_fields(self, info: ValidationInfo) -> MetadataRow:
ImageTypeEnum.rcm_mosaic,
]:
raise _error_incompatible_fields(
"rcm_case_id", "image_type", field2_value=ImageTypeEnum.rcm_macroscopic
"rcm_case_id", "image_type", field2_value=self.image_type.value
)

return self
Expand All @@ -426,7 +426,7 @@ def validate_dermoscopic_fields(self) -> MetadataRow:

if self.image_type != ImageTypeEnum.dermoscopic:
raise _error_incompatible_fields(
"dermoscopic_type", "image_type", field2_value="dermoscopic"
"dermoscopic_type", "image_type", field2_value=self.image_type.value
)

return self
Expand Down
19 changes: 15 additions & 4 deletions tests/test_dependent_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,14 @@ def test_dermoscopic_type_requires_image_type_dermoscopic() -> None:


def test_dermoscopic_type_requires_dermoscopic_image_type() -> None:
row = {"dermoscopic_type": "contact polarized", "image_type": "clinical: overview"}
with pytest.raises(ValidationError) as excinfo:
MetadataRow.model_validate(
{"dermoscopic_type": "contact polarized", "image_type": "clinical: overview"}
)
MetadataRow.model_validate(row)
assert len(excinfo.value.errors()) == 1
assert "dermoscopic_type is incompatible with image_type" in excinfo.value.errors()[0]["msg"]
assert (
f"dermoscopic_type is incompatible with image_type {row['image_type']}"
in excinfo.value.errors()[0]["msg"]
)


def test_rcm_case_id_requires_rcm_image_type() -> None:
Expand All @@ -70,6 +72,15 @@ def test_rcm_case_id_requires_rcm_image_type() -> None:
assert len(excinfo.value.errors()) == 1
assert "rcm_case_id requires setting image_type" in excinfo.value.errors()[0]["msg"]

row = {"rcm_case_id": "12345", "image_type": "dermoscopic"}
with pytest.raises(ValidationError) as excinfo:
MetadataRow.model_validate(row)
assert len(excinfo.value.errors()) == 1
assert (
f"rcm_case_id is incompatible with image_type {row['image_type']}"
in excinfo.value.errors()[0]["msg"]
)

MetadataRow.model_validate({"rcm_case_id": "12345", "image_type": "RCM: tile"})


Expand Down