Skip to content

Commit bc2de5f

Browse files
committed
Converter unit tests
1 parent 114c230 commit bc2de5f

File tree

1 file changed

+94
-6
lines changed

1 file changed

+94
-6
lines changed

delta_backend/tests/test_converter.py

Lines changed: 94 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,113 @@
22
from unittest.mock import patch, MagicMock
33
from Converter import Converter
44

5-
class TestConverter(unittest.TestCase):
65

6+
class TestConverter(unittest.TestCase):
77

88
@patch.object(Converter, '_getFHIRParser')
99
def test_runConversion_fhirParserException(self, mock_getFHIRParser):
10-
1110
converter = Converter({})
12-
# Arrange: make _getFHIRParser raise an exception
1311
mock_getFHIRParser.side_effect = RuntimeError("Mocked FHIR parser failure")
1412

15-
# Act
1613
result = converter.runConversion(json_data={})
1714

18-
# Assert
1915
self.assertIsInstance(result, dict)
2016
self.assertEqual(result["code"], 0)
2117
self.assertIn("FHIR Parser Unexpected exception", result["message"])
2218
self.assertEqual(len(converter.getErrorRecords()), 1)
2319
self.assertEqual(converter.getErrorRecords()[0], result)
2420

21+
@patch.object(Converter, '_getFHIRParser')
22+
@patch.object(Converter, '_getSchemaParser')
23+
def test_runConversion_schemaParserException(self, mock_getSchemaParser, mock_getFHIRParser):
24+
converter = Converter({})
25+
mock_getFHIRParser.return_value = MagicMock()
26+
mock_getSchemaParser.side_effect = RuntimeError("Mocked Schema parser failure")
27+
28+
result = converter.runConversion(json_data={})
29+
30+
self.assertEqual(result["code"], 0)
31+
self.assertIn("Schema Parser Unexpected exception", result["message"])
32+
self.assertEqual(len(converter.getErrorRecords()), 1)
33+
34+
@patch.object(Converter, '_getFHIRParser')
35+
@patch.object(Converter, '_getSchemaParser')
36+
def test_runConversion_conversionCheckerException(self, mock_getSchemaParser, mock_getFHIRParser):
37+
converter = Converter({})
38+
mock_getFHIRParser.return_value = MagicMock()
39+
mock_getSchemaParser.return_value = MagicMock()
40+
41+
with patch('Converter.ConversionChecker', side_effect=RuntimeError("Mocked Checker failure")):
42+
result = converter.runConversion(json_data={})
43+
self.assertEqual(result["code"], 0)
44+
self.assertIn("Expression Checker Unexpected exception", result["message"])
45+
46+
@patch.object(Converter, '_getFHIRParser')
47+
@patch.object(Converter, '_getSchemaParser')
48+
def test_runConversion_getConversionsException(self, mock_getSchemaParser, mock_getFHIRParser):
49+
converter = Converter({})
50+
mock_getFHIRParser.return_value = MagicMock()
51+
schema_mock = MagicMock()
52+
schema_mock.getConversions.side_effect = RuntimeError("Mocked getConversions failure")
53+
mock_getSchemaParser.return_value = schema_mock
54+
55+
with patch('Converter.ConversionChecker', return_value=MagicMock()):
56+
result = converter.runConversion(json_data={})
57+
self.assertEqual(result["code"], 0)
58+
self.assertIn("Expression Getter Unexpected exception", result["message"])
59+
60+
@patch.object(Converter, '_getFHIRParser')
61+
@patch.object(Converter, '_getSchemaParser')
62+
@patch('Converter.ConversionChecker')
63+
def test_runConversion_success(self, mock_checker, mock_schema_parser, mock_fhir_parser):
64+
converter = Converter({})
65+
mock_fhir_parser.return_value.getKeyValue.return_value = ["test_value"]
66+
mock_schema_parser.return_value.getConversions.return_value = [{
67+
"fieldNameFHIR": "someFHIRField",
68+
"fieldNameFlat": "someFlatField",
69+
"expression": {
70+
"expressionType": "type",
71+
"expressionRule": "rule"
72+
}
73+
}]
74+
checker_instance = MagicMock()
75+
checker_instance.convertData.return_value = "converted_value"
76+
mock_checker.return_value = checker_instance
77+
78+
result = converter.runConversion(json_data={"occurrenceDateTime": "2023-01-01T12:00:00"})
79+
80+
self.assertEqual(len(result), 1)
81+
self.assertIn("someFlatField", result[0])
82+
self.assertEqual(result[0]["someFlatField"], "converted_value")
83+
84+
@patch('Converter.extract_person_names', return_value=("John", "Doe"))
85+
@patch('Converter.get_valid_address', return_value="12345")
86+
@patch('Converter.get_patient', return_value={"name": "John Doe"})
87+
@patch('Converter.extract_site_code', return_value=("SITE123", "URI456"))
88+
@patch('Converter.extract_practitioner_names', return_value=("Dr", "Smith"))
89+
def test_extract_patient_details(self, mock_practitioner, mock_site_code, mock_patient, mock_address, mock_names):
90+
converter = Converter({})
91+
json_data = {
92+
"occurrenceDateTime": "2023-01-01T00:00:00",
93+
"performer": [],
94+
"patient": {}
95+
}
96+
97+
result = converter.extract_patient_details(json_data, "PERSON_FORENAME")
98+
self.assertEqual(result, "John")
99+
100+
result = converter.extract_patient_details(json_data, "PERSON_SURNAME")
101+
self.assertEqual(result, "Doe")
102+
103+
result = converter.extract_patient_details(json_data, "PERSON_POSTCODE")
104+
self.assertEqual(result, "12345")
105+
106+
result = converter.extract_patient_details(json_data, "SITE_CODE")
107+
self.assertEqual(result, "SITE123")
108+
109+
result = converter.extract_patient_details(json_data, "PERFORMING_PROFESSIONAL_SURNAME")
110+
self.assertEqual(result, "Smith")
111+
112+
25113
if __name__ == "__main__":
26-
unittest.main()
114+
unittest.main()

0 commit comments

Comments
 (0)