"""Test for invoke_commit_royalties_lambda task.""" from unittest.mock import patch import pytest from hooks.lambda_invoke.invocation_response import LambdaInvocationResponse from lib import constants from tasks.accounting_run_commit.invoke_commit_royalties_lambda import \ invoke_commit_royalties_lambda_task @patch('tasks.accounting_run_commit.invoke_commit_royalties_lambda.OrchLambdaHook') @patch('tasks.accounting_run_commit.invoke_commit_royalties_lambda.helpers') def test_invoke_commit_royalties_lambda_success( mock_helpers, mock_orchlambdahook, mock_commit_dag_run, lambda_response_success, mock_commit_royalties_event ): """Test invoke_commit_royalties_lambda task success.""" accounting_run_id = mock_commit_royalties_event.get('target_id') mock_helpers.get_event_from_params.return_value.target_id = accounting_run_id mock_helpers.create_event.return_value.to_json.return_value = \ mock_commit_royalties_event mock_lambda_response = LambdaInvocationResponse(lambda_response_success) mock_orchlambdahook.return_value.invoke_lambda.return_value = mock_lambda_response mock_helpers.create_abacus_state.return_value = None invoke_commit_royalties_lambda_task(mock_commit_dag_run) mock_helpers.get_event_from_params.assert_called_once_with( mock_commit_dag_run ) mock_helpers.create_event.assert_called_once_with( accounting_run_id, constants.DAG_COMMIT_COMMIT_ROYALTIES_EVENT_NAME ) mock_helpers.create_abacus_state.assert_called_once_with( accounting_run_id, constants.ACCOUNTING_RUN_ACTIONS.COMMIT_ROYALTIES ) mock_orchlambdahook.assert_called_once() mock_orchlambdahook.return_value.invoke_lambda.assert_called_once_with( mock_commit_royalties_event ) @patch('tasks.accounting_run_commit.invoke_commit_royalties_lambda.OrchLambdaHook') @patch('tasks.accounting_run_commit.invoke_commit_royalties_lambda.helpers') def test_invoke_commit_royalties_lambda_failure( mock_helpers, mock_orchlambdahook, mock_commit_dag_run, lambda_response_error, mock_commit_royalties_event ): """Test invoke_commit_royalties_lambda task failure.""" accounting_run_id = mock_commit_royalties_event.get('target_id') mock_helpers.get_event_from_params.return_value.target_id = accounting_run_id mock_helpers.create_event.return_value.to_json.return_value = \ mock_commit_royalties_event mock_lambda_response = LambdaInvocationResponse(lambda_response_error) mock_orchlambdahook.return_value.invoke_lambda.return_value = mock_lambda_response with pytest.raises(Exception): invoke_commit_royalties_lambda_task(mock_commit_dag_run) mock_helpers.get_event_from_params.assert_called_once_with( mock_commit_dag_run ) mock_helpers.create_event.assert_called_once_with( accounting_run_id, constants.DAG_COMMIT_COMMIT_ROYALTIES_EVENT_NAME ) mock_helpers.create_abacus_state.assert_not_called() mock_orchlambdahook.assert_called_once() mock_orchlambdahook.return_value.invoke_lambda.assert_called_once_with( mock_commit_royalties_event )