"""Update Payment Group Payment Account State logic tests.""" from unittest.mock import patch import pytest from abacus_state.constants.constants import ( PARENT_TABLE_NAMES, PAYMENT_GROUP_PAYMENT_ACCOUNT_ACTION_NAMES, ) from abacus_state.constants.error import ERROR_RECORD_DOES_NOT_EXIST from abacus_state.exceptions import OwsAbacusStateApiException from abacus_state.logic import payment_group_payment_account_state as logic from tests.utils.factories import AbacusStateFactory @patch('abacus_state.logic.payment_group_payment_account_state.AbacusState') def test_bulk_update_payment_account_states(mock_model, request_engine): """Test bulk_update_payment_group_payment_account_states method.""" parent_table_name = PARENT_TABLE_NAMES.PAYMENT_GROUP_PAYMENT_ACCOUNT abacus_state_1 = AbacusStateFactory.create( action_name=PAYMENT_GROUP_PAYMENT_ACCOUNT_ACTION_NAMES.SEND_PAYMENTS, action_status='init', parent_table_name=parent_table_name, parent_table_id=1, ) mock_put_request = [ {'action_status': 'running', 'parent_table_id': 1, 'message': 'testing'} ] mock_model.get_action_status_list.return_value = [abacus_state_1] res = logic.bulk_update_payment_group_payment_account_states( parent_table_name, mock_put_request ) assert res.status == 200 mock_model.commit_changes.assert_called_once() @patch('abacus_state.logic.payment_group_payment_account_state.AbacusState') def test_bulk_update_payment_account_states_error(mock_model, request_engine): """Test bulk_update_payment_group_payment_account_states method. for a parent_table_id that doesn't exist. """ parent_table_name = PARENT_TABLE_NAMES.PAYMENT_GROUP_PAYMENT_ACCOUNT parent_table_id = 1111 expected_error_message = ERROR_RECORD_DOES_NOT_EXIST.format( parent_table_id=parent_table_id, parent_table_name=parent_table_name ) mock_put_request = [ { 'action_status': 'running', 'parent_table_id': parent_table_id, 'message': 'testing', } ] mock_model.get_action_status_list.return_value = [] with pytest.raises(OwsAbacusStateApiException, match=expected_error_message): logic.bulk_update_payment_group_payment_account_states( parent_table_name, mock_put_request ) @patch('abacus_state.logic.payment_group_payment_account_state.AbacusState') def test_update_payment_group_payment_account_state(mock_model, request_engine): """Test update_payment_group_payment_account state method.""" abacus_state = AbacusStateFactory.create( action_name=PAYMENT_GROUP_PAYMENT_ACCOUNT_ACTION_NAMES.SEND_PAYMENTS, action_status='init', parent_table_name='payment_group_payment_account', parent_table_id=1, ) mock_put_request = {'action_status': 'running', 'message': 'testing'} res = logic.update_payment_group_payment_account_state( abacus_state, **mock_put_request ) assert res.status == 200 mock_model.commit_changes.assert_called_once()