"""Unit tests for update_abacus_state task.""" from unittest.mock import patch from lib.constants import ABACUS_STATE_STATUSES from tasks.sales_get_eligible.update_abacus_state import update_abacus_state_task @patch('tasks.sales_get_eligible.update_abacus_state.ows') @patch('tasks.sales_get_eligible.update_abacus_state.helpers') def test_update_abacus_state_started( mock_helpers, mock_ows, mock_sales_get_eligible_event, mock_sales_get_eligible_dag_run, mock_sales_file_abacus_states ): """Test updating sales_file 'get_eligible_sales' abacus_state to 'running'.""" sales_file_id = mock_sales_get_eligible_event.get('target_id') get_eligible_sales = mock_sales_file_abacus_states[0] abacus_state_id = get_eligible_sales.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = sales_file_id mock_helpers.get_abacus_state.return_value = get_eligible_sales update_abacus_state_task( mock_sales_get_eligible_dag_run, ABACUS_STATE_STATUSES.RUNNING ) mock_helpers.get_event_from_params.assert_called_once_with( mock_sales_get_eligible_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_get_eligible.update_abacus_state.ows') @patch('tasks.sales_get_eligible.update_abacus_state.helpers') def test_update_abacus_state_success( mock_helpers, mock_ows, mock_sales_get_eligible_event, mock_sales_get_eligible_dag_run, mock_sales_file_abacus_states ): """Test updating sales_file 'get_eligible_sales' abacus_state to 'complete'.""" sales_file_id = mock_sales_get_eligible_event.get('target_id') get_eligible_sales = mock_sales_file_abacus_states[0] abacus_state_id = get_eligible_sales.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = sales_file_id mock_helpers.get_abacus_state.return_value = get_eligible_sales update_abacus_state_task( mock_sales_get_eligible_dag_run, ABACUS_STATE_STATUSES.COMPLETE ) mock_helpers.get_event_from_params.assert_called_once_with( mock_sales_get_eligible_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_get_eligible.update_abacus_state.ows') @patch('tasks.sales_get_eligible.update_abacus_state.helpers') def test_update_abacus_state_failure( mock_helpers, mock_ows, mock_sales_get_eligible_event, mock_sales_get_eligible_dag_run, mock_sales_file_abacus_states ): """Test updating sales_file 'get_eligible_sales' abacus_state to 'error'.""" sales_file_id = mock_sales_get_eligible_event.get('target_id') get_eligible_sales = mock_sales_file_abacus_states[0] abacus_state_id = get_eligible_sales.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = sales_file_id mock_helpers.get_abacus_state.return_value = get_eligible_sales update_abacus_state_task( mock_sales_get_eligible_dag_run, ABACUS_STATE_STATUSES.ERROR ) mock_helpers.get_event_from_params.assert_called_once_with( mock_sales_get_eligible_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} )