"""Tests for account logic.""" from unittest.mock import MagicMock, patch from abacus_account.logic.account_search import _execute_account_query, \ _execute_paged_query, _get_account_name_from_params, get_accounts from abacus_account.schemas import AccountDetailSchema from tests.utils.factories import AccountFactory def test__execute_paged_query(): """Test pagination.""" query = MagicMock() query.order_by.return_value = query.limit.return_value = query.all.return_value = \ query.offset.return_value = query.options.return_value = query _execute_paged_query(query, limit=100, offset=0) query.limit.assert_called_once_with(100) query.offset.assert_called_once_with(0) query.options.assert_called_once() query.all.assert_called_once() def test__get_account_name_from_params(): """Test getting account name value from params dict.""" params1 = {'account_name': 'Test%20Account'} res1 = _get_account_name_from_params(params1) params2 = {'account_name': 'Test Account'} res2 = _get_account_name_from_params(params2) assert res1 == res2 == 'Test Account' params3 = {'account_name': ''} res3 = _get_account_name_from_params(params3) params4 = {'other_parameter': 'false'} res4 = _get_account_name_from_params(params4) assert res3 == res4 == '' @patch('abacus_account.models.account.Account.get_filtered_query') @patch('abacus_account.logic.account_search._execute_paged_query') @patch('abacus_account.logic.account_search._get_account_name_from_params') @patch('abacus_account.logic.account.models') def test__execute_account_query( mock_models, mock_get_account_name_from_params, mock_execute_paged_query, mock_get_filtered_query): """Test account searching function.""" account_name = 'Test Account' params = { 'account_name': account_name, 'account_ids': [], 'payment_entity_id': 1, 'agreement_type_ids': [123] } mock_models.Account.get_filtered_query.return_value = [] mock_get_account_name_from_params.return_value = account_name _execute_account_query(params) mock_get_account_name_from_params.assert_called_once_with(params) mock_get_filtered_query.assert_called_once_with(**params) mock_execute_paged_query.assert_called_once() @patch('abacus_account.logic.account_search._execute_account_query') def test_get_accounts(mock_execute_account_query): """Test main search function.""" params = {'account_name': 'Test Account'} accounts = AccountFactory.create_batch(3) mock_execute_account_query.return_value = accounts, len(accounts) res = get_accounts(params) mock_execute_account_query.assert_called_once_with(params) assert res.message == { 'items': AccountDetailSchema().dump(accounts, many=True), 'total_count': len(accounts) }