22from unittest.mock import patch, MagicMock
33from 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+
25113if __name__ == "__main__":
26- unittest.main()
114+ unittest.main()
0 commit comments