"""Payment group logic tests.""" from unittest.mock import call, patch from abacus_account.logic import payment_group as logic from abacus_account.models import Account from abacus_account.schemas.account import EligibleAccountListSchema @patch('abacus_account.logic.payment_group.models') def test_get_payment_group_eligible_accounts( mock_models, account_payment_eligible_via_closing_balance ): """Test get_payment_group_eligible_accounts method.""" payment_group_id = 123 accounts = Account.get_eligible_for_payment_via_closing_balance(payment_group_id) mock_models.Account.get_eligible_for_payment_via_closing_balance.return_value = ( accounts ) result = logic.get_payment_group_eligible_accounts(payment_group_id) assert result.status == 200 assert result.message == EligibleAccountListSchema(many=True).dump(accounts) assert mock_models.Account.get_eligible_for_payment_via_closing_balance.call_args_list == [ # noqa call(payment_group_id) ] @patch('abacus_account.logic.payment_group.models') def test_get_payment_group_eligible_accounts_with_account_ids( mock_models, account_payment_eligible_via_closing_balance_with_account_ids ): """Test get_payment_group_eligible_accounts with account_ids filter.""" payment_group_id = 124 accounts = Account.get_eligible_for_payment_via_closing_balance( payment_group_id ) mock_models.Account.get_eligible_for_payment_via_closing_balance.return_value = ( # noqa accounts ) result = logic.get_payment_group_eligible_accounts(payment_group_id) assert result.status == 200 assert result.message == EligibleAccountListSchema(many=True).dump( accounts ) assert len(result.message) == 3 account_ids = [acc['account_id'] for acc in result.message] assert 1000 not in account_ids assert 1001 in account_ids assert 1002 in account_ids assert 1003 in account_ids assert mock_models.Account.get_eligible_for_payment_via_closing_balance.call_args_list == [ # noqa call(payment_group_id) ]