"""Unit tests for update_abacus_state task.""" from unittest.mock import patch from lib.constants import ABACUS_STATE_STATUSES from tasks.accounting_period_sales_approve.update_abacus_state \ import update_abacus_state_task @patch('tasks.accounting_period_sales_approve.update_abacus_state.ows') @patch('tasks.accounting_period_sales_approve.update_abacus_state.helpers') def test_update_abacus_state_started( mock_helpers, mock_ows, mock_accounting_period_sales_approve_event, mock_accounting_period_sales_approve_dag_run, mock_accounting_period_abacus_states ): """Test updating accounting_period 'approve_sales_files' to 'running'.""" accounting_period_id = mock_accounting_period_sales_approve_event.get('target_id') approve_sales_files = mock_accounting_period_abacus_states[1] abacus_state_id = approve_sales_files.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = accounting_period_id mock_helpers.get_abacus_state.return_value = approve_sales_files update_abacus_state_task( mock_accounting_period_sales_approve_dag_run, ABACUS_STATE_STATUSES.RUNNING ) mock_helpers.get_event_from_params.assert_called_once_with( mock_accounting_period_sales_approve_dag_run ) mock_helpers.get_abacus_state.assert_called_once_with(accounting_period_id) mock_ows.update_abacus_state.assert_called_once_with( abacus_state_id, body={'action_status': ABACUS_STATE_STATUSES.RUNNING} ) @patch('tasks.accounting_period_sales_approve.update_abacus_state.ows') @patch('tasks.accounting_period_sales_approve.update_abacus_state.helpers') def test_update_abacus_state_success( mock_helpers, mock_ows, mock_accounting_period_sales_approve_event, mock_accounting_period_sales_approve_dag_run, mock_accounting_period_abacus_states ): """Test updating accounting_period 'approve_sales_files' to 'complete'.""" accounting_period_id = mock_accounting_period_sales_approve_event.get('target_id') approve_sales_files = mock_accounting_period_abacus_states[1] abacus_state_id = approve_sales_files.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = accounting_period_id mock_helpers.get_abacus_state.return_value = approve_sales_files update_abacus_state_task( mock_accounting_period_sales_approve_dag_run, ABACUS_STATE_STATUSES.COMPLETE ) mock_helpers.get_event_from_params.assert_called_once_with( mock_accounting_period_sales_approve_dag_run ) mock_helpers.get_abacus_state.assert_called_once_with(accounting_period_id) mock_ows.update_abacus_state.assert_called_once_with( abacus_state_id, body={'action_status': ABACUS_STATE_STATUSES.COMPLETE} ) @patch('tasks.accounting_period_sales_approve.update_abacus_state.ows') @patch('tasks.accounting_period_sales_approve.update_abacus_state.helpers') def test_update_abacus_state_failure( mock_helpers, mock_ows, mock_accounting_period_sales_approve_event, mock_accounting_period_sales_approve_dag_run, mock_accounting_period_abacus_states ): """Test updating accounting_period 'approve_sales_files' to 'error'.""" accounting_period_id = mock_accounting_period_sales_approve_event.get('target_id') approve_sales_files = mock_accounting_period_abacus_states[1] abacus_state_id = approve_sales_files.get('abacus_state_id') mock_helpers.get_event_from_params.return_value.target_id = accounting_period_id mock_helpers.get_abacus_state.return_value = approve_sales_files update_abacus_state_task( mock_accounting_period_sales_approve_dag_run, ABACUS_STATE_STATUSES.ERROR ) mock_helpers.get_event_from_params.assert_called_once_with( mock_accounting_period_sales_approve_dag_run ) mock_helpers.get_abacus_state.assert_called_once_with(accounting_period_id) mock_ows.update_abacus_state.assert_called_once_with( abacus_state_id, body={'action_status': ABACUS_STATE_STATUSES.ERROR} )