11import json
22import unittest
3- import os
4- import time
5- from datetime import datetime , timedelta
6- from decimal import Decimal
73from copy import deepcopy
8- from unittest import TestCase
94from unittest .mock import patch , Mock
105from moto import mock_dynamodb , mock_sqs
11- from boto3 import resource as boto3_resource , client as boto3_client
6+ from boto3 import resource as boto3_resource
127from tests .utils_for_converter_tests import ValuesForTests , ErrorValuesForTests
13- from botocore .config import Config
14- from pathlib import Path
15- from zoneinfo import ZoneInfo
168from SchemaParser import SchemaParser
179from Converter import Converter
1810from ConversionChecker import ConversionChecker , RecordError
@@ -112,7 +104,7 @@ def get_event(event_name="INSERT", operation="operation", supplier="EMIS"):
112104 """Returns test event data."""
113105 return ValuesForTests .get_event (event_name , operation , supplier )
114106
115- def assert_dynamodb_record (self , operation_flag , items , expected_values , expected_imms , response ):
107+ def assert_dynamodb_record (self , operation_flag , action_flag , items , expected_values , expected_imms , response ):
116108 """
117109 Asserts that a record with the expected structure exists in DynamoDB.
118110 Ignores dynamically generated fields like PK, DateTimeStamp, and ExpiresAt.
@@ -125,16 +117,17 @@ def assert_dynamodb_record(self, operation_flag, items, expected_values, expecte
125117 {k : v for k , v in item .items () if k not in ["PK" , "DateTimeStamp" , "ExpiresAt" ]}
126118 for item in items
127119 if item .get ("Operation" ) == operation_flag
120+ and item .get ("Imms" , {}).get ("ACTION_FLAG" ) == action_flag
128121 ]
129122
130123 self .assertGreater (len (filtered_items ), 0 , f"No matching item found for { operation_flag } " )
131124
132125 imms_data = filtered_items [0 ]["Imms" ]
133- self .assertIsInstance (imms_data , str )
126+ self .assertIsInstance (imms_data , dict )
134127 self .assertGreater (len (imms_data ), 0 )
135128
136129 # Check Imms JSON structure matches exactly
137- self .assertEqual (imms_data , str ( expected_imms ) , "Imms data does not match expected JSON structure" )
130+ self .assertEqual (imms_data , expected_imms , "Imms data does not match expected JSON structure" )
138131
139132 for key , expected_value in expected_values .items ():
140133 self .assertIn (key , filtered_items [0 ], f"{ key } is missing" )
@@ -169,7 +162,6 @@ def test_fhir_converter_json_error_scenario(self):
169162 errorRecords = FHIRConverter .getErrorRecords ()
170163
171164 # Check if bad data creates error records
172- print (f"Error Test Case, { len (errorRecords )} " )
173165 self .assertTrue (len (errorRecords ) > 0 )
174166
175167 def test_handler_imms_convert_to_flat_json (self ):
@@ -195,7 +187,12 @@ def test_handler_imms_convert_to_flat_json(self):
195187 expected_imms = ValuesForTests .get_expected_imms (test_case ["EXPECTED_ACTION_FLAG" ])
196188
197189 self .assert_dynamodb_record (
198- test_case ["EXPECTED_ACTION_FLAG" ], items , expected_values , expected_imms , response
190+ test_case ["Operation" ],
191+ test_case ["EXPECTED_ACTION_FLAG" ],
192+ items ,
193+ expected_values ,
194+ expected_imms ,
195+ response
199196 )
200197
201198 result = self .table .scan ()
@@ -435,7 +432,6 @@ def test_convert_to_date(self, MockLookUpData):
435432
436433 # 7 Validate all error logs of various responses
437434 messages = [err ["message" ] for err in checker .errorRecords ]
438- print (f"Error Test Case, { messages } " )
439435
440436 self .assertIn ("Value is not a string" , messages )
441437
@@ -486,7 +482,6 @@ def test_convert_to_date_time(self, MockLookUpData):
486482 self .assertEqual (result , "" )
487483
488484 messages = [err ["message" ] for err in checker .errorRecords ]
489- print (f"Error Test Case, { messages } " )
490485
491486 self .assertIn ("Unexpected exception [ValueError]" , messages [0 ])
492487 self .assertIn ("Unsupported Format or offset" , messages [1 ])
@@ -676,7 +671,7 @@ def _run_test(self, expected_forename):
676671 """Helper function to run the test"""
677672 self .converter = Converter (json .dumps (request_json_data ))
678673 flat_json = self .converter .runConversion (request_json_data , False , True )
679- self .assertEqual (flat_json [0 ][ "PERSON_FORENAME" ], expected_forename )
674+ self .assertEqual (flat_json ["PERSON_FORENAME" ], expected_forename )
680675
681676class TestPersonSurNameToFlatJson (unittest .TestCase ):
682677
@@ -764,7 +759,7 @@ def _run_test_surname(self, expected_forename):
764759 """Helper function to run the test"""
765760 self .converter = Converter (json .dumps (request_json_data ))
766761 flat_json = self .converter .runConversion (request_json_data , False , True )
767- self .assertEqual (flat_json [0 ][ "PERSON_SURNAME" ], expected_forename )
762+ self .assertEqual (flat_json ["PERSON_SURNAME" ], expected_forename )
768763
769764
770765class TestPersonPostalCodeToFlatJson (unittest .TestCase ):
@@ -853,7 +848,7 @@ def _run_postal_code_test(self, expected_postal_code):
853848 """Helper function to run the test"""
854849 self .converter = Converter (json .dumps (request_json_data ))
855850 flat_json = self .converter .runConversion (request_json_data , False , True )
856- self .assertEqual (flat_json [0 ][ "PERSON_POSTCODE" ], expected_postal_code )
851+ self .assertEqual (flat_json ["PERSON_POSTCODE" ], expected_postal_code )
857852
858853
859854class TestPersonSiteCodeToFlatJson (unittest .TestCase ):
@@ -972,7 +967,7 @@ def _run_site_code_test(self, expected_site_code):
972967 """Helper function to run the test"""
973968 self .converter = Converter (json .dumps (request_json_data ))
974969 flat_json = self .converter .runConversion (request_json_data , False , True )
975- self .assertEqual (flat_json [ 0 ] .get ("SITE_CODE" ), expected_site_code )
970+ self .assertEqual (flat_json .get ("SITE_CODE" ), expected_site_code )
976971
977972
978973class TestPersonSiteUriToFlatJson (unittest .TestCase ):
@@ -1063,7 +1058,7 @@ def _run_site_uri_test(self, expected_site_code):
10631058 """Helper function to run the test"""
10641059 self .converter = Converter (json .dumps (request_json_data ))
10651060 flat_json = self .converter .runConversion (request_json_data , False , True )
1066- self .assertEqual (flat_json [ 0 ] .get ("SITE_CODE_TYPE_URI" ), expected_site_code )
1061+ self .assertEqual (flat_json .get ("SITE_CODE_TYPE_URI" ), expected_site_code )
10671062
10681063
10691064class TestPractitionerForeNameToFlatJson (unittest .TestCase ):
@@ -1179,7 +1174,7 @@ def _run_practitioner_test(self, expected_forename):
11791174 """Helper function to run the test"""
11801175 self .converter = Converter (json .dumps (request_json_data ))
11811176 flat_json = self .converter .runConversion (request_json_data , False , True )
1182- self .assertEqual (flat_json [0 ][ "PERFORMING_PROFESSIONAL_FORENAME" ], expected_forename )
1177+ self .assertEqual (flat_json ["PERFORMING_PROFESSIONAL_FORENAME" ], expected_forename )
11831178
11841179
11851180class TestPractitionerSurNameToFlatJson (unittest .TestCase ):
@@ -1293,7 +1288,7 @@ def _run_test_practitioner_surname(self, expected_forename):
12931288 """Helper function to run the test"""
12941289 self .converter = Converter (json .dumps (request_json_data ))
12951290 flat_json = self .converter .runConversion (request_json_data , False , True )
1296- self .assertEqual (flat_json [0 ][ "PERFORMING_PROFESSIONAL_SURNAME" ], expected_forename )
1291+ self .assertEqual (flat_json ["PERFORMING_PROFESSIONAL_SURNAME" ], expected_forename )
12971292
12981293 if __name__ == "__main__" :
12991294 unittest .main ()
0 commit comments