@@ -89,6 +89,13 @@ def get_event(event_name=EventName.CREATE, operation="operation", supplier="EMIS
8989 """Returns test event data."""
9090 return ValuesForTests .get_event (event_name , operation , supplier )
9191
92+ def assert_structured_error_records (self , error_records ):
93+ self .assertTrue (error_records )
94+
95+ for error_record in error_records :
96+ self .assertEqual (set (error_record ), {"code" , "field" , "value" , "message" })
97+ self .assertTrue (error_record ["message" ])
98+
9299 def assert_dynamodb_record (
93100 self ,
94101 operation_flag ,
@@ -139,68 +146,47 @@ def test_fhir_converter_json_direct_data(self):
139146 json_data = json .dumps (ValuesForTests .json_data )
140147
141148 fhir_converter = Converter (json_data )
142- FlatFile = fhir_converter .run_conversion ()
149+ result = fhir_converter .run_conversion ()
143150
144- flatJSON = json .dumps (FlatFile )
145151 expected_imms_value = deepcopy (ValuesForTests .expected_imms2 ) # UPDATE is currently the default action-flag
146- expected_imms = json .dumps (expected_imms_value )
147- self .assertEqual (flatJSON , expected_imms )
148-
149- errorRecords = fhir_converter .get_error_records ()
152+ self .assertEqual (result , expected_imms_value )
153+ self .assertFalse (fhir_converter .get_error_records ())
150154
151- self .assertEqual (len (errorRecords ), 0 )
152-
153- def test_fhir_converter_json_error_scenario_reporting_on (self ):
155+ def test_fhir_converter_json_error_scenario (self ):
154156 """it should convert fhir json data to flat json - error scenarios"""
155- error_test_cases = [
156- ErrorValuesForTests .missing_json ,
157- ErrorValuesForTests .json_dob_error ,
158- ]
157+ error_test_cases = {
158+ "missing_json" : ErrorValuesForTests .missing_json ,
159+ "json_dob_error" : ErrorValuesForTests .json_dob_error ,
160+ }
159161
160- for test_case in error_test_cases :
161- json_data = json .dumps (test_case )
162+ for test_name , test_case in error_test_cases .items ():
163+ with self .subTest (test_name = test_name ):
164+ fhir_converter = Converter (json .dumps (test_case ))
165+ fhir_converter .run_conversion ()
162166
163- fhir_converter = Converter (json_data )
164- fhir_converter .run_conversion ()
167+ self .assert_structured_error_records (fhir_converter .get_error_records ())
165168
166- errorRecords = fhir_converter .get_error_records ()
167-
168- # Check if bad data creates error records
169- self .assertTrue (len (errorRecords ) > 0 )
170-
171- def test_fhir_converter_json_error_scenario_reporting_off (self ):
169+ def test_fhir_converter_json_incorrect_data_scenario (self ):
172170 """it should convert fhir json data to flat json - error scenarios"""
173- error_test_cases = [
174- ErrorValuesForTests .missing_json ,
175- ErrorValuesForTests .json_dob_error ,
176- ]
177-
178- for test_case in error_test_cases :
179- json_data = json .dumps (test_case )
180-
181- fhir_converter = Converter (json_data , report_unexpected_exception = False )
182- fhir_converter .run_conversion ()
183171
184- errorRecords = fhir_converter .get_error_records ()
172+ with self .assertRaisesRegex (ValueError , "FHIR data is required for initialization." ):
173+ Converter (None )
185174
186- # Check if bad data creates error records
187- self .assertTrue (len (errorRecords ) == 0 )
175+ def test_handler_persists_structured_conversion_errors (self ):
176+ event = self .get_event (operation = Operation .UPDATE )
177+ event ["Records" ][0 ]["dynamodb" ]["NewImage" ]["Resource" ]["S" ] = json .dumps (ErrorValuesForTests .json_dob_error )
188178
189- def test_fhir_converter_json_incorrect_data_scenario_reporting_on (self ):
190- """it should convert fhir json data to flat json - error scenarios"""
191-
192- with self .assertRaises (ValueError ):
193- fhir_converter = Converter (None )
194- errorRecords = fhir_converter .get_error_records ()
195- self .assertTrue (len (errorRecords ) > 0 )
179+ response = handler (event , None )
196180
197- def test_fhir_converter_json_incorrect_data_scenario_reporting_off (self ):
198- """it should convert fhir json data to flat json - error scenarios"""
181+ result = self .table .scan ()
182+ items = result .get ("Items" , [])
183+ self .assertTrue (response )
184+ self .assertEqual (len (items ), 1 )
199185
200- with self . assertRaises ( ValueError ):
201- fhir_converter = Converter ( None , report_unexpected_exception = False )
202- errorRecords = fhir_converter . get_error_records ( )
203- self .assertTrue ( len ( errorRecords ) == 0 )
186+ error_records = items [ 0 ][ "Imms" ][ "CONVERSION_ERRORS" ]
187+ self . assert_structured_error_records ( error_records )
188+ self . assertEqual ( error_records [ 0 ][ "field" ], "PERSON_DOB" )
189+ self .assertEqual ( error_records [ 0 ][ "value" ], "196513-28" )
204190
205191 def test_handler_imms_convert_to_flat_json (self ):
206192 """Test that the Imms field contains the correct flat JSON data for CREATE, UPDATE, and DELETE operations."""
@@ -235,8 +221,6 @@ def test_handler_imms_convert_to_flat_json(self):
235221 response ,
236222 )
237223
238- result = self .table .scan ()
239- items = result .get ("Items" , [])
240224 self .clear_table ()
241225
242226 def test_handler_imms_convert_to_flat_json_legacy_patientsk_compatibility (self ):
0 commit comments