77from common .mappings import EventName , Operation , ActionFlag
88from utils_for_converter_tests import ValuesForTests , RecordConfig
99
10+ TEST_QUEUE_URL = "https://sqs.eu-west-2.amazonaws.com/123456789012/test-queue"
11+
1012# Set environment variables before importing the module
1113## @TODO: # Note: Environment variables shared across tests, thus aligned
12- os .environ ["AWS_SQS_QUEUE_URL" ] = "https://sqs.eu-west-2.amazonaws.com/123456789012/test-queue"
14+ os .environ ["AWS_SQS_QUEUE_URL" ] = TEST_QUEUE_URL
1315os .environ ["DELTA_TABLE_NAME" ] = "my_delta_table"
1416os .environ ["SOURCE" ] = "my_source"
1517
@@ -103,8 +105,20 @@ def test_handler_success_insert(self):
103105 self .assertEqual (put_item_data ["Imms" ]["ACTION_FLAG" ], ActionFlag .CREATE )
104106 self .assertEqual (put_item_data ["Operation" ], Operation .CREATE )
105107 self .assertEqual (put_item_data ["SupplierSystem" ], supplier )
108+ self .mock_sqs_client .send_message .assert_not_called ()
109+
110+ def test_handler_overall_failure (self ):
111+ # Arrange
112+ event = {"invalid_format" : True }
113+
114+ # Act
115+ result = handler (event , None )
116+
117+ # Assert
118+ self .assertFalse (result )
119+ self .mock_sqs_client .send_message .assert_called_with (QueueUrl = TEST_QUEUE_URL , MessageBody = json .dumps (event ))
106120
107- def test_handler_failure (self ):
121+ def test_handler_processing_failure (self ):
108122 # Arrange
109123 self .mock_delta_table .put_item .return_value = FAIL_RESPONSE
110124 event = ValuesForTests .get_event ()
@@ -114,6 +128,7 @@ def test_handler_failure(self):
114128
115129 # Assert
116130 self .assertFalse (result )
131+ self .mock_sqs_client .send_message .assert_called_with (QueueUrl = TEST_QUEUE_URL , MessageBody = json .dumps (event ))
117132
118133 def test_handler_success_update (self ):
119134 # Arrange
@@ -134,6 +149,7 @@ def test_handler_success_update(self):
134149 self .assertEqual (put_item_data ["Imms" ]["ACTION_FLAG" ], ActionFlag .UPDATE )
135150 self .assertEqual (put_item_data ["Operation" ], Operation .UPDATE )
136151 self .assertEqual (put_item_data ["ImmsID" ], imms_id )
152+ self .mock_sqs_client .send_message .assert_not_called ()
137153
138154 def test_handler_success_delete_physical (self ):
139155 # Arrange
@@ -154,6 +170,7 @@ def test_handler_success_delete_physical(self):
154170 self .assertEqual (put_item_data ["Operation" ], Operation .DELETE_PHYSICAL )
155171 self .assertEqual (put_item_data ["ImmsID" ], imms_id )
156172 self .assertEqual (put_item_data ["Imms" ], "" ) # check imms has been blanked out
173+ self .mock_sqs_client .send_message .assert_not_called ()
157174
158175 def test_handler_success_delete_logical (self ):
159176 # Arrange
@@ -175,6 +192,7 @@ def test_handler_success_delete_logical(self):
175192 self .assertEqual (put_item_data ["Imms" ]["ACTION_FLAG" ], ActionFlag .DELETE_LOGICAL )
176193 self .assertEqual (put_item_data ["Operation" ], Operation .DELETE_LOGICAL )
177194 self .assertEqual (put_item_data ["ImmsID" ], imms_id )
195+ self .mock_sqs_client .send_message .assert_not_called ()
178196
179197 @patch ("delta.logger.info" )
180198 def test_dps_record_skipped (self , mock_logger_info ):
@@ -186,6 +204,8 @@ def test_dps_record_skipped(self, mock_logger_info):
186204
187205 # Check logging and Firehose were called
188206 mock_logger_info .assert_called_with ("Record from DPS skipped" )
207+ self .mock_firehose_logger .send_log .assert_called ()
208+ self .mock_sqs_client .send_message .assert_not_called ()
189209
190210 @patch ("delta.Converter" )
191211 def test_partial_success_with_errors (self , mock_converter ):
0 commit comments