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
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def install_terms(
text_line = decode_line(bytes_line)
values = next(csv.reader(StringIO(text_line)))
if len(values) < 9:
return MissingDataError(
raise MissingDataError(
message="Loinc term found without required fields provided"
)
term = LoincTerm(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import io
import os
from unittest.mock import MagicMock

import pytest

from cdisc_rules_engine.exceptions.custom_exceptions import MissingDataError
from cdisc_rules_engine.models.dictionaries import DictionaryTypes, AbstractTermsFactory
from cdisc_rules_engine.services.data_services.local_data_service import (
LocalDataService,
Expand All @@ -21,3 +25,18 @@ def test_install():
expected = ["100000-9", "100001-7", "100002-5"]
for i, code in enumerate(dictionary):
assert code == expected[i]


def test_install_raises_on_row_with_missing_fields():
"""A Loinc.csv data row with fewer than 9 fields must raise MissingDataError,
not return the exception object (which callers store as the dictionary)."""
data_service = MagicMock()
data_service.has_all_files.return_value = True
data_service.read_data.return_value = io.BytesIO(
b"NUM,COMP,PROP,TIME,SYS,SCALE,METHOD,CLASS,VER\n100000-9,short\n"
)
factory = AbstractTermsFactory(data_service).get_service(
DictionaryTypes.LOINC.value
)
with pytest.raises(MissingDataError):
factory.install_terms("some/path")