"""Test ows-payment requests.""" from unittest.mock import patch from payments_generate.ows_payment import _get_last_payment from payments_generate.ows_payment import bulk_create_payment_accounts from payments_generate.ows_payment import get_payment_group_payment from payments_generate.ows_payment import get_payment_minimums from payments_generate.ows_payment import get_reference_tax_withholding from payments_generate.ows_payment import last_payment_per_account SERVICE = 'ows-payment' @patch('payments_generate.ows_payment.raise_payment_error') def test_bulk_create_payment_accounts_success( mock_raise_service_error, mock_payment_accounts, request_engine ): """Test successfully creating payment_group_payment_accounts.""" payment_group_payment_id = 11 request_engine['ows-payment'].add_spec( 'POST', f'/payment-group-payment/{payment_group_payment_id}/accounts/', status=201, response=[] ) res = bulk_create_payment_accounts(payment_group_payment_id, mock_payment_accounts) assert res is None mock_raise_service_error.assert_not_called() @patch('payments_generate.ows_payment.raise_payment_error') def test_bulk_create_payment_accounts_failure( mock_raise_service_error, mock_payment_accounts, request_engine ): """Test failure bulk creating payment_group_payment_accounts.""" payment_group_payment_id = 11 request_engine['ows-payment'].add_spec( 'POST', f'/payment-group-payment/{payment_group_payment_id}/accounts/', status=400, response='error' ) res = bulk_create_payment_accounts(payment_group_payment_id, mock_payment_accounts) assert res is None mock_raise_service_error.assert_called_once_with( f'ERROR from POST /payment-group-payment/{payment_group_payment_id}/accounts/', payment_accounts=mock_payment_accounts ) @patch('payments_generate.ows_payment.raise_payment_error') def test_get_payment_group_payment_success( mock_raise_service_error, mock_payment_group_payment, request_engine ): """Test successfully getting payment_group_payment detail.""" payment_group_payment_id = 22 request_engine['ows-payment'].add_spec( 'GET', f'/payment-group-payment/{payment_group_payment_id}/', status=200, response=mock_payment_group_payment ) res = get_payment_group_payment(payment_group_payment_id) assert res['payment_group_payment_id'] == payment_group_payment_id assert res['payment_group_id'] mock_raise_service_error.assert_not_called() @patch('payments_generate.ows_payment.raise_payment_error') def test_get_payment_group_payment_failure(mock_raise_service_error, request_engine): """Test failure getting payment_group_payment detail.""" payment_group_payment_id = 22 request_engine['ows-payment'].add_spec( 'GET', f'/payment-group-payment/{payment_group_payment_id}/', status=400, response='error' ) res = get_payment_group_payment(payment_group_payment_id) assert res is None mock_raise_service_error.assert_called_once_with( f'ERROR in GET /payment-group-payment/{payment_group_payment_id}/' ) @patch('payments_generate.ows_payment.raise_payment_error') def test_get_last_payment_request_success( mock_raise_service_error, mock_last_payment, request_engine ): """Test successfully getting last posted payment for a given account.""" account_id = 123 request_engine['ows-payment'].add_spec( 'GET', f'/payment-group-payment-account/last-payment/{account_id}/', status=200, response=mock_last_payment ) res = _get_last_payment(account_id) assert res['last_payment_amount'] == '800.50' assert res['last_statement_period_id'] == 1 mock_raise_service_error.assert_not_called() @patch('payments_generate.ows_payment.raise_payment_error') def test_get_last_payment_request_failure(mock_raise_service_error, request_engine): """Test failure getting last posted payment for a given account.""" account_id = 123 request_engine['ows-payment'].add_spec( 'GET', f'/payment-group-payment-account/last-payment/{account_id}/', status=400, response='error' ) res = _get_last_payment(account_id) assert res is None mock_raise_service_error.assert_called_once_with( f'ERROR in GET /payment-group-payment-account/last-payment/{account_id}/' ) @patch('payments_generate.ows_payment._get_last_payment') def test_last_payment_per_account(mock_get_request): """Test getting last payment amounts for a list of accounts.""" current_balance = '0.00' mock_get_request.return_value = current_balance accounts = [{'account_id': 123}, {'account_id': 456}] result = last_payment_per_account(accounts) assert len(result.items()) == len(accounts) assert result[123] == current_balance assert result[456] == current_balance @patch('payments_generate.ows_payment.raise_payment_error') def test_get_payment_minimums_success( mock_raise_service_error, mock_payment_minimums, request_engine ): """Test successfully getting payment minimums.""" request_engine['ows-payment'].add_spec( 'GET', '/payment-minimums/', status=200, response={'items': mock_payment_minimums, 'total_count': 2} ) res = get_payment_minimums() assert res['items'] == mock_payment_minimums mock_raise_service_error.assert_not_called() @patch('payments_generate.ows_payment.raise_payment_error') def test_mock_reference_tax_withholding_success( mock_raise_service_error, mock_reference_tax_withholding, request_engine ): """Test successfully getting tax withholding rates.""" request_engine['ows-payment'].add_spec( 'GET', '/reference-tax-withholding/', status=200, response={'items': mock_reference_tax_withholding, 'total_count': 2} ) res = get_reference_tax_withholding() assert res['items'] == mock_reference_tax_withholding mock_raise_service_error.assert_not_called()