"""Unit tests for update_abacus_state task.""" from unittest.mock import patch from lib.constants import ABACUS_STATE_STATUSES from tasks.sales_approve.update_abacus_state import update_abacus_state_task @patch('tasks.sales_approve.update_abacus_state.ows') @patch('tasks.sales_approve.update_abacus_state.helpers') def test_update_abacus_state_started( mock_helpers, mock_ows, mock_sales_approve_event, mock_sales_approve_dag_run, mock_sales_file_abacus_states ): """Test updating sales_file 'approve_sales' abacus_state to 'running'.""" sales_file_id = mock_sales_approve_event.get('target_id') approve_sales_action = mock_sales_file_abacus_states[1] abacus_state_id = approve_sales_action.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = sales_file_id mock_helpers.get_abacus_state.return_value = approve_sales_action update_abacus_state_task(mock_sales_approve_dag_run, ABACUS_STATE_STATUSES.RUNNING) mock_helpers.get_event_from_params.assert_called_once_with( mock_sales_approve_dag_run ) mock_helpers.get_abacus_state.assert_called_once_with(sales_file_id) mock_ows.update_abacus_state.assert_called_once_with( abacus_state_id, body={'action_status': ABACUS_STATE_STATUSES.RUNNING} ) @patch('tasks.sales_approve.update_abacus_state.ows') @patch('tasks.sales_approve.update_abacus_state.helpers') def test_update_abacus_state_success( mock_helpers, mock_ows, mock_sales_approve_event, mock_sales_approve_dag_run, mock_sales_file_abacus_states ): """Test updating sales_file 'approve_sales' abacus_state to 'complete'.""" sales_file_id = mock_sales_approve_event.get('target_id') approve_sales_action = mock_sales_file_abacus_states[1] abacus_state_id = approve_sales_action.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = sales_file_id mock_helpers.get_abacus_state.return_value = approve_sales_action update_abacus_state_task(mock_sales_approve_dag_run, ABACUS_STATE_STATUSES.COMPLETE) mock_helpers.get_event_from_params.assert_called_once_with( mock_sales_approve_dag_run ) mock_helpers.get_abacus_state.assert_called_once_with(sales_file_id) mock_ows.update_abacus_state.assert_called_once_with( abacus_state_id, body={'action_status': ABACUS_STATE_STATUSES.COMPLETE} ) @patch('tasks.sales_approve.update_abacus_state.ows') @patch('tasks.sales_approve.update_abacus_state.helpers') def test_update_abacus_state_failure( mock_helpers, mock_ows, mock_sales_approve_event, mock_sales_approve_dag_run, mock_sales_file_abacus_states ): """Test updating sales_file 'approve_sales' abacus_state to 'error'.""" sales_file_id = mock_sales_approve_event.get('target_id') approve_sales_action = mock_sales_file_abacus_states[1] abacus_state_id = approve_sales_action.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = sales_file_id mock_helpers.get_abacus_state.return_value = approve_sales_action update_abacus_state_task(mock_sales_approve_dag_run, ABACUS_STATE_STATUSES.ERROR) mock_helpers.get_event_from_params.assert_called_once_with( mock_sales_approve_dag_run ) mock_helpers.get_abacus_state.assert_called_once_with(sales_file_id) mock_ows.update_abacus_state.assert_called_once_with( abacus_state_id, body={'action_status': ABACUS_STATE_STATUSES.ERROR} )