"""Unit test for invoking the `adjustment_file_generate` Lambdas.""" from unittest.mock import MagicMock, patch import pytest from lib import config from tasks.adjustment_file_generate import lambdas @patch('tasks.adjustment_file_generate.lambdas.success_generate_task') @patch('tasks.adjustment_file_generate.lambdas.OrchLambdaHook') @patch('tasks.adjustment_file_generate.lambdas.helpers') def test_invoke_generate_task( mock_helpers, mock_orchlambdahook, mock_success_task, mock_adjustment_file_generate_dag_run, ): """Test invoking the `generate_flowthrough_adjustments` Lambda.""" mock_event = MagicMock() mock_helpers.get_event_from_params.return_value = mock_event mock_response = MagicMock() mock_response.function_response.succeeded = True mock_response.function_response.payload = {'status': 'OK'} mock_orchlambdahook.return_value.invoke_lambda.return_value = mock_response result = lambdas.invoke_generate_task(mock_adjustment_file_generate_dag_run) assert result is True mock_helpers.get_event_from_params.assert_called_once_with( mock_adjustment_file_generate_dag_run ) mock_orchlambdahook.assert_called_once_with( config.GENERATE_FLOWTHROUGH_ADJUSTMENTS_LAMBDA_NAME ) mock_orchlambdahook.return_value.invoke_lambda.assert_called_once_with( mock_event.to_json() ) # Test when the Lambda fails mock_response.function_response.succeeded = False mock_response.error_message = 'ERROR' with pytest.raises(Exception, match='ERROR'): lambdas.invoke_generate_task(mock_adjustment_file_generate_dag_run) # Test when the Lambda returns no records mock_response.function_response.succeeded = True mock_response.function_response.payload = {'status': 'NO_RECORDS'} result = lambdas.invoke_generate_task(mock_adjustment_file_generate_dag_run) assert result is False mock_success_task.assert_called_once_with( mock_adjustment_file_generate_dag_run ) @patch('tasks.adjustment_file_generate.lambdas.OrchLambdaHook') @patch('tasks.adjustment_file_generate.lambdas.helpers') def test_invoke_validate_task( mock_helpers, mock_orchlambdahook, mock_adjustment_file_generate_dag_run, ): """Test invoking the `adjustments_json_validation` Lambda.""" mock_event = MagicMock() mock_helpers.get_event_from_params.return_value = mock_event mock_response = MagicMock() mock_response.function_response.succeeded = True mock_response.function_response.payload = {'status': 'OK'} mock_orchlambdahook.return_value.invoke_lambda.return_value = mock_response lambdas.invoke_validate_task(mock_adjustment_file_generate_dag_run) mock_helpers.get_event_from_params.assert_called_once_with( mock_adjustment_file_generate_dag_run ) mock_orchlambdahook.assert_called_once_with( config.ADJUSTMENTS_JSON_VALIDATION_LAMBDA_NAME ) mock_orchlambdahook.return_value.invoke_lambda.assert_called_once_with( mock_event.to_json() ) # Test when the Lambda fails mock_response.function_response.succeeded = False mock_response.error_message = 'ERROR' with pytest.raises(Exception, match='ERROR'): lambdas.invoke_validate_task(mock_adjustment_file_generate_dag_run) # Test when the Lambda returns validation errors mock_response.function_response.succeeded = True mock_response.function_response.payload = {'status': 'VALIDATION_ERRORS'} with pytest.raises(Exception, match='Validation Errors'): lambdas.invoke_validate_task(mock_adjustment_file_generate_dag_run) @patch('tasks.adjustment_file_generate.lambdas.OrchLambdaHook') @patch('tasks.adjustment_file_generate.lambdas.helpers') def test_invoke_import_task( mock_helpers, mock_orchlambdahook, mock_adjustment_file_generate_dag_run, ): """Test invoking the `adjustments_json_import` Lambda.""" mock_event = MagicMock() mock_helpers.get_event_from_params.return_value = mock_event mock_response = MagicMock() mock_response.function_response.succeeded = True mock_response.function_response.payload = {'status': 'OK'} mock_orchlambdahook.return_value.invoke_lambda.return_value = mock_response lambdas.invoke_import_task(mock_adjustment_file_generate_dag_run) mock_helpers.get_event_from_params.assert_called_once_with( mock_adjustment_file_generate_dag_run ) mock_orchlambdahook.assert_called_once_with( config.ADJUSTMENTS_JSON_IMPORT_LAMBDA_NAME ) mock_orchlambdahook.return_value.invoke_lambda.assert_called_once_with( mock_event.to_json() ) # Test when the Lambda fails mock_response.function_response.succeeded = False mock_response.error_message = 'ERROR' with pytest.raises(Exception, match='ERROR'): lambdas.invoke_import_task(mock_adjustment_file_generate_dag_run)