"""Tests for account logic.""" from unittest.mock import patch from abacus_account.logic.account_payee_dataload import ( format_payees_for_dataloader, get_payees_by_account_ids, get_payees_by_ids, ) from abacus_account.schemas import AccountPayeeDetailSchema from abacus_account.utils.format_response import prepare_dataload_response from tests.utils.factories import AccountFactory from tests.utils.factories import AccountPayeeFactory def test_prepare_dataload_response(account_payee_data_fixtures): """Test prepare_dataload_response function.""" payees_list = [ account_payee_data_fixtures[0], account_payee_data_fixtures[1], account_payee_data_fixtures[2], ] entity_ids = [1, 2, 3, 4] res = prepare_dataload_response(entity_ids, payees_list, 'account_payee_id') assert res == [ { 'data': account_payee_data_fixtures[0] }, { 'data': account_payee_data_fixtures[1] }, { 'data': account_payee_data_fixtures[2] }, { 'data': None }, ] @patch('abacus_account.logic.account_payee_dataload._execute_payee_query') def test_get_payees_by_account_ids(mock_query): """Test get_payees_by_account_ids function.""" account_ids = [1, 2, 3] account_payees = [AccountPayeeFactory.create( account=AccountFactory.create( account_id=account_id, account_name=f'Account {account_id}' ), sap_vendor_id=(100 + account_id), account_payee_id=account_id, ) for account_id in account_ids] mock_query.return_value = account_payees res = get_payees_by_account_ids(account_ids) assert res == [ AccountPayeeDetailSchema().dump(account_payees[0]), AccountPayeeDetailSchema().dump(account_payees[1]), AccountPayeeDetailSchema().dump(account_payees[2]) ] mock_query.assert_called_once_with({'account_ids': account_ids}) @patch('abacus_account.logic.account_payee_dataload._execute_payee_query') def test_get_payees_by_ids(mock_query): """Test get_payees_by_ids function.""" payee_ids = [1, 2, 3] account_payees = [AccountPayeeFactory.create( account=AccountFactory.create( account_id=payee_id, account_name=f'Account {payee_id}' ), sap_vendor_id=(100 + payee_id), account_payee_id=payee_id, ) for payee_id in payee_ids] mock_query.return_value = account_payees res = get_payees_by_ids(payee_ids) assert res == [ AccountPayeeDetailSchema().dump(account_payees[0]), AccountPayeeDetailSchema().dump(account_payees[1]), AccountPayeeDetailSchema().dump(account_payees[2]) ] mock_query.assert_called_once_with({'account_payee_ids': payee_ids}) def test_format_for_dataloader(): """Test format_for_dataloader function.""" payee_list = [ { 'payoneer_program_id': 4, 'payoneer_payee_id': 100, 'payoneer_payee_name': 'Payoneer Payee', 'payoneer_iframe_url': 'payoneer.com/fake_iframe_url', 'payoneer_iframe_url_date': '2022-02-01', 'payoneer_session_id': 'B99', 'sap_vendor_id': 101, 'reference_payment_type_id': None, 'account_id': 1, 'account_payee_id': 1, 'last_modified': '2022-02-28' }, { 'payoneer_program_id': 5, 'payoneer_payee_id': 100, 'payoneer_payee_name': 'Payoneer Payee', 'payoneer_iframe_url': 'payoneer.com/fake_iframe_url', 'payoneer_iframe_url_date': '2022-02-01', 'payoneer_session_id': 'B99', 'sap_vendor_id': 102, 'reference_payment_type_id': None, 'account_id': 2, 'account_payee_id': 2, 'last_modified': '2022-02-28' }, { 'payoneer_program_id': 6, 'payoneer_payee_id': 100, 'payoneer_payee_name': 'Payoneer Payee', 'payoneer_iframe_url': 'payoneer.com/fake_iframe_url', 'payoneer_iframe_url_date': '2022-02-01', 'payoneer_session_id': 'B99', 'sap_vendor_id': 103, 'reference_payment_type_id': None, 'account_id': 3, 'account_payee_id': 3, 'last_modified': '2022-02-28' } ] res = format_payees_for_dataloader( input_ids=[1, 2, 3, 4], payees_list=payee_list, key='account_payee_id' ) assert res.message == {'items': [ { 'data': payee_list[0] }, { 'data': payee_list[1] }, { 'data': payee_list[2] }, { 'data': None }, ]}