"""Test ows-payee requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock import simplejson as json from payoneer_payments_payout.ows_payee import post_payments_to_payoneer @patch('payoneer_payments_payout.ows_payee.raise_service_error') def test_post_payments_to_payoneer_success( mock_raise_service_error, mock_payoneer_mass_payouts, ows_client_mock: OwsClientMock ): """Test successfully posted payments to payoneer.""" post_body = json.loads( json.dumps(mock_payoneer_mass_payouts, allow_nan=False) ) program_id = 111333555 mock_response = {'result': 'Payments Created'} request_url = f'/payoneer/programs/{program_id}/mass-payouts' ows_client_mock.post('ows-payee', request_url, json=post_body).mock( return_value=httpx.Response( 201, json=mock_response ) ) res = post_payments_to_payoneer(program_id, post_body) assert res == mock_response mock_raise_service_error.assert_not_called() @patch('payoneer_payments_payout.ows_payee.app_logger') @patch('payoneer_payments_payout.ows_payee.raise_service_error') def test_post_payments_to_payoneer_bad_request_failure( mock_raise_service_error, mock_app_logger, mock_payoneer_mass_payouts, mock_payoneer_mass_payouts_bad_response, ows_client_mock: OwsClientMock ): """Test failure posting payments to payoneer.""" post_body = json.loads( json.dumps(mock_payoneer_mass_payouts, allow_nan=False) ) program_id = 111333555 request_url = f'/payoneer/programs/{program_id}/mass-payouts' ows_client_mock.post('ows-payee', request_url, json=post_body).mock( return_value=httpx.Response( 400, json=mock_payoneer_mass_payouts_bad_response ) ) post_payments_to_payoneer(program_id, post_body) mock_raise_service_error.assert_called_once_with( f'ERROR in POST /payoneer/programs/{program_id}/mass-payouts', 'ows-payee' )