| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- <?php
- namespace Srmklive\PayPal\Tests\Unit\Client;
- use GuzzleHttp\Utils;
- use PHPUnit\Framework\Attributes\Test;
- use PHPUnit\Framework\TestCase;
- use Srmklive\PayPal\Tests\MockClientClasses;
- use Srmklive\PayPal\Tests\MockRequestPayloads;
- use Srmklive\PayPal\Tests\MockResponsePayloads;
- class InvoicesTest extends TestCase
- {
- use MockClientClasses;
- use MockRequestPayloads;
- use MockResponsePayloads;
- #[Test]
- public function it_can_generate_unique_invoice_number(): void
- {
- $expectedResponse = $this->mockGenerateInvoiceNumberResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/generate-next-invoice-number';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_create_a_draft_invoice(): void
- {
- $expectedResponse = $this->mockCreateInvoicesResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->createInvoiceParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_list_current_invoices(): void
- {
- $expectedResponse = $this->mockListInvoicesResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices?total_required=true';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'get');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->get($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_delete_an_invoice(): void
- {
- $expectedResponse = '';
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'delete');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->delete($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_update_an_invoice(): void
- {
- $expectedResponse = $this->mockUpdateInvoicesResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->updateInvoiceParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'put');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->put($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_show_details_for_an_invoice(): void
- {
- $expectedResponse = $this->mockGetInvoicesResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'get');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->get($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_cancel_an_invoice(): void
- {
- $expectedResponse = '';
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5/cancel';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->cancelInvoiceParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_generate_qr_code_for_invoice(): void
- {
- $expectedResponse = $this->mockGenerateInvoiceNumberResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5/generate-qr-code';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->generateQRCodeInvoiceParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_register_payment_for_invoice(): void
- {
- $expectedResponse = $this->mockInvoiceRegisterPaymentResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5/payments';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->registerInvoicePaymentParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_delete_payment_for_invoice(): void
- {
- $expectedResponse = '';
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5/payments/EXTR-86F38350LX4353815';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'delete');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->delete($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_refund_payment_for_invoice(): void
- {
- $expectedResponse = $this->mockInvoiceRefundPaymentResponse();
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5/refunds';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->refundInvoicePaymentParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_delete_refund_for_invoice(): void
- {
- $expectedResponse = '';
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-333R-YUQL-YNNN-D7WF/refunds/EXTR-2LG703375E477444T';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'delete');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->delete($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_send_an_invoice(): void
- {
- $expectedResponse = '';
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-EHNV-LJ5S-A7DZ-V6NJ/send';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->sendInvoiceParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- #[Test]
- public function it_can_send_reminder_for_an_invoice(): void
- {
- $expectedResponse = '';
- $expectedEndpoint = 'https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-Z56S-5LLA-Q52L-CPZ5/remind';
- $expectedParams = [
- 'headers' => [
- 'Accept' => 'application/json',
- 'Accept-Language' => 'en_US',
- 'Authorization' => 'Bearer some-token',
- ],
- 'json' => $this->sendInvoiceReminderParams(),
- ];
- $mockHttpClient = $this->mock_http_request(Utils::jsonEncode($expectedResponse), $expectedEndpoint, $expectedParams, 'post');
- $this->assertEquals($expectedResponse, Utils::jsonDecode($mockHttpClient->post($expectedEndpoint, $expectedParams)->getBody(), true));
- }
- }
|