From e166d43a4527130e5d024e54b1489c966137b679 Mon Sep 17 00:00:00 2001 From: Muhammad Abdullah Waheed Date: Wed, 13 Nov 2024 13:23:33 +0500 Subject: [PATCH 1/2] fix: fixed unhandled errors --- commerce_coordinator/apps/commercetools/clients.py | 2 +- commerce_coordinator/apps/commercetools/sub_messages/tasks.py | 2 ++ commerce_coordinator/apps/commercetools/utils.py | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/commerce_coordinator/apps/commercetools/clients.py b/commerce_coordinator/apps/commercetools/clients.py index 0df503e9..bd3f02f4 100644 --- a/commerce_coordinator/apps/commercetools/clients.py +++ b/commerce_coordinator/apps/commercetools/clients.py @@ -528,7 +528,7 @@ def update_line_item_transition_state_on_fulfillment(self, order_id: str, order_ return self.get_order_by_id(order_id) except CommercetoolsError as err: # Logs & ignores version conflict errors due to duplicate Commercetools messages - handle_commercetools_error(err, f"Unable to update LineItemState of order {order_id}") + handle_commercetools_error(err, f"Unable to update LineItemState of order {order_id}", True) return None def retire_customer_anonymize_fields(self, customer_id: str, customer_version: int, diff --git a/commerce_coordinator/apps/commercetools/sub_messages/tasks.py b/commerce_coordinator/apps/commercetools/sub_messages/tasks.py index 3ec13378..cefd3c55 100644 --- a/commerce_coordinator/apps/commercetools/sub_messages/tasks.py +++ b/commerce_coordinator/apps/commercetools/sub_messages/tasks.py @@ -101,6 +101,8 @@ def fulfill_order_placed_message_signal_task( line_item_state_id, TwoUKeys.PROCESSING_FULFILMENT_STATE ) + if not updated_order: + return True # from here we will always be transitioning from a 'Fulfillment Processing' state line_item_state_id = client.get_state_by_key(TwoUKeys.PROCESSING_FULFILMENT_STATE).id diff --git a/commerce_coordinator/apps/commercetools/utils.py b/commerce_coordinator/apps/commercetools/utils.py index 01116d09..1f243bd2 100644 --- a/commerce_coordinator/apps/commercetools/utils.py +++ b/commerce_coordinator/apps/commercetools/utils.py @@ -35,9 +35,9 @@ def get_braze_client(): ) -def handle_commercetools_error(err: CommercetoolsError, context: str): +def handle_commercetools_error(err: CommercetoolsError, context: str, is_info=False): error_message = f"[CommercetoolsError] {context} - Correlation ID: {err.correlation_id}, Details: {err.errors}" - logger.error(error_message) + logger.info(error_message) if is_info else logger.error(error_message) def send_order_confirmation_email( From 0c7124cc22de827b1007c3f8dd8c936a04372965 Mon Sep 17 00:00:00 2001 From: Muhammad Abdullah Waheed Date: Wed, 13 Nov 2024 16:03:47 +0500 Subject: [PATCH 2/2] fix: fixed unit tests and linting issues --- .../apps/commercetools/tests/test_clients.py | 4 ++-- commerce_coordinator/apps/commercetools/utils.py | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/commerce_coordinator/apps/commercetools/tests/test_clients.py b/commerce_coordinator/apps/commercetools/tests/test_clients.py index 1e66b5d7..ff17e316 100644 --- a/commerce_coordinator/apps/commercetools/tests/test_clients.py +++ b/commerce_coordinator/apps/commercetools/tests/test_clients.py @@ -672,7 +672,7 @@ def test_update_line_item_state_exception(self, mock_state_by_id): status_code=409 ) - with patch('commerce_coordinator.apps.commercetools.clients.logging.Logger.error') as log_mock: + with patch('commerce_coordinator.apps.commercetools.clients.logging.Logger.info') as log_mock: self.client_set.client.update_line_item_transition_state_on_fulfillment( "mock_order_id", 1, @@ -689,7 +689,7 @@ def test_update_line_item_state_exception(self, mock_state_by_id): f"Details: {mock_error_response['errors']}" ) - log_mock.assert_called_once_with(expected_message) + log_mock.assert_called_with(expected_message) @patch('commerce_coordinator.apps.commercetools.clients.CommercetoolsAPIClient.get_state_by_id') @patch('commerce_coordinator.apps.commercetools.clients.CommercetoolsAPIClient.get_order_by_id') diff --git a/commerce_coordinator/apps/commercetools/utils.py b/commerce_coordinator/apps/commercetools/utils.py index 1f243bd2..8f4f6ca6 100644 --- a/commerce_coordinator/apps/commercetools/utils.py +++ b/commerce_coordinator/apps/commercetools/utils.py @@ -36,8 +36,12 @@ def get_braze_client(): def handle_commercetools_error(err: CommercetoolsError, context: str, is_info=False): + """Handles commercetools errors.""" error_message = f"[CommercetoolsError] {context} - Correlation ID: {err.correlation_id}, Details: {err.errors}" - logger.info(error_message) if is_info else logger.error(error_message) + if is_info: + logger.info(error_message) + else: + logger.error(error_message) def send_order_confirmation_email(