PluginProbe
Packeta / 2.3.2
Packeta v2.3.2
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / tests / Module / Order / PickupPointValidatorTest.php

PickupPointValidatorTest.php in Packeta 2.3.2, at tests/Module/Order/PickupPointValidatorTest.php

111 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Tests\Module\Order;
6
7 use Packetery\Core\Api\Rest\PickupPointValidateRequest;
8 use Packetery\Core\Api\Rest\PickupPointValidateResponse;
9 use Packetery\Core\Log\ILogger;
10 use Packetery\Core\Log\Record;
11 use Packetery\Module\Framework\WcAdapter;
12 use Packetery\Module\Framework\WpAdapter;
13 use Packetery\Module\Options\OptionsProvider;
14 use Packetery\Module\Order\PickupPointValidator;
15 use Packetery\Module\WebRequestClient;
16 use PHPUnit\Framework\MockObject\MockObject;
17 use PHPUnit\Framework\TestCase;
18
19 class PickupPointValidatorTest extends TestCase {
20
21 private OptionsProvider&MockObject $optionsProviderMock;
22 private ILogger&MockObject $loggerMock;
23 private WebRequestClient&MockObject $webRequestClientMock;
24 private WpAdapter&MockObject $wpAdapter;
25 private WcAdapter&MockObject $wcAdapter;
26
27 private function createPickupPointValidator(): PickupPointValidator {
28 $this->optionsProviderMock = $this->createMock( OptionsProvider::class );
29 $this->loggerMock = $this->createMock( ILogger::class );
30 $this->webRequestClientMock = $this->createMock( WebRequestClient::class );
31 $this->wpAdapter = $this->createMock( WpAdapter::class );
32 $this->wcAdapter = $this->createMock( WcAdapter::class );
33
34 return new PickupPointValidator(
35 $this->optionsProviderMock,
36 $this->loggerMock,
37 $this->webRequestClientMock,
38 $this->wpAdapter,
39 $this->wcAdapter,
40 );
41 }
42
43 public function testValidateReturnsErrorResponseWhenApiKeyIsInvalid(): void {
44 $validator = $this->createPickupPointValidator();
45
46 $this->optionsProviderMock
47 ->method( 'get_api_key' )
48 ->willReturn( null );
49
50 $this->wpAdapter->method( '__' )->willReturn( 'dummyErrorTitle' );
51
52 $requestMock = $this->createMock( PickupPointValidateRequest::class );
53
54 $this->loggerMock
55 ->expects( $this->once() )
56 ->method( 'add' )
57 ->with(
58 $this->callback(
59 function ( Record $record ) {
60 return $record->status === Record::STATUS_ERROR
61 && $record->action === Record::ACTION_PICKUP_POINT_VALIDATE;
62 }
63 )
64 );
65
66 $response = $validator->validate( $requestMock );
67
68 $this->assertInstanceOf( PickupPointValidateResponse::class, $response );
69 $this->assertEmpty( $response->getErrors() );
70 }
71
72 public function testValidateCallsValidateWhenApiKeyIsValid(): void {
73 $validator = $this->createPickupPointValidator();
74
75 $this->optionsProviderMock
76 ->method( 'get_api_key' )
77 ->willReturn( 'dummyApiKey' );
78
79 $this->wpAdapter->method( '__' )->willReturn( 'dummyErrorTitle' );
80
81 $this->webRequestClientMock
82 ->expects( $this->once() )
83 ->method( 'post' )
84 ->with(
85 $this->callback(
86 function ( string $url ) {
87 return str_contains( $url, 'validate' );
88 }
89 ),
90 $this->anything()
91 )
92 ->willReturn(
93 // phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode
94 json_encode(
95 [
96 'isValid' => true,
97 'errors' => [],
98 'status' => 200,
99 ]
100 )
101 );
102
103 $requestMock = $this->createMock( PickupPointValidateRequest::class );
104
105 $response = $validator->validate( $requestMock );
106
107 $this->assertInstanceOf( PickupPointValidateResponse::class, $response );
108 $this->assertEmpty( $response->getErrors() );
109 }
110 }
111