@@ -863,20 +863,48 @@ def test_forward_request_to_dynamo(
863863 expected_values = test_case [0 ]["expected_values" ]
864864 assert expected_values .items () <= call_data .items ()
865865
866- def clear_test_tables (self ):
867- """Clear DynamoDB table after each test."""
868- scan = self .table .scan ()
869- items = scan .get ("Items" , [])
870- while items :
871- for item in items :
872- self .table .delete_item (Key = {"PK" : item ["PK" ]})
873- scan = self .table .scan ()
874- items = scan .get ("Items" , [])
875-
876- def teardown (self ):
877- """Deletes mock dynamodb resource"""
878- self .table .delete ()
879- self .dynamodb_resource = None
866+ @patch ("forwarding_batch_lambda.sqs_client.send_message" )
867+ def test_forward_lambda_handler_exception_handler (self , mock_send_message ):
868+ """Test exception handling when sqs_client fails"""
869+ # Arrange
870+ # Ensure there is at least one failure, so that sqs_client is called
871+ test_cases = [
872+ {
873+ "name" : "Row 1: Duplication Error: Create failure " ,
874+ "input" : self .generate_input (row_id = 1 , operation_requested = "CREATE" , include_fhir_json = True ),
875+ "expected_keys" : ForwarderValues .EXPECTED_KEYS_DIAGNOSTICS ,
876+ "expected_values" : {
877+ "row_id" : "row-1" ,
878+ "diagnostics" : create_diagnostics_dictionary (
879+ IdentifierDuplicationError ("https://www.ravs.england.nhs.uk/#RSV_002" )
880+ ),
881+ },
882+ "is_failure" : True ,
883+ },
884+ ]
885+
886+ self .table .put_item (
887+ Item = {
888+ "PK" : "Immunization#4d2ac1eb-080f-4e54-9598-f2d53334681c" ,
889+ "PatientPK" : "Patient#9732928395" ,
890+ "PatientSK" : "RSV#4d2ac1eb-080f-4e54-9598-f2d53334681c" ,
891+ "IdentifierPK" : "https://www.ravs.england.nhs.uk/#RSV_002" ,
892+ "Version" : 1 ,
893+ }
894+ )
895+
896+ mock_send_message .side_effect = Exception ("Unknown Exception in SQS client" )
897+
898+ event = self .generate_event (test_cases )
899+
900+ self .mock_redis .hget .return_value = "RSV"
901+ self .mock_redis_getter .return_value = self .mock_redis
902+
903+ # Act & Assert
904+ with self .assertRaises (Exception ) as context :
905+ forward_lambda_handler (event , {})
906+
907+ self .assertEqual ("Unknown Exception in SQS client" , str (context .exception ))
880908
881909
882910if __name__ == "__main__" :
0 commit comments