PluginProbe
Packeta / 2.1
Packeta v2.1
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 / LabelPrintTest.php

LabelPrintTest.php in Packeta 2.1, at tests/Module/Order/LabelPrintTest.php

201 lines 6.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Tests\Module\Order;
4
5 use Packetery\Core\Api\Soap\Client;
6 use Packetery\Core\Api\Soap\Response\PacketsCourierLabelsPdf;
7 use Packetery\Core\Api\Soap\Response\PacketsLabelsPdf;
8 use Packetery\Core\Log\ILogger;
9 use Packetery\Latte\Engine;
10 use Packetery\Module\Framework\WpAdapter;
11 use Packetery\Module\Labels\CarrierLabelService;
12 use Packetery\Module\Labels\LabelPrintParametersService;
13 use Packetery\Module\MessageManager;
14 use Packetery\Module\ModuleHelper;
15 use Packetery\Module\Options\OptionsProvider;
16 use Packetery\Module\Order\LabelPrint;
17 use Packetery\Module\Order\PacketActionsCommonLogic;
18 use Packetery\Module\Order\Repository;
19 use Packetery\Nette\Http\Request;
20 use PHPUnit\Framework\MockObject\MockObject;
21 use PHPUnit\Framework\TestCase;
22 use ReflectionClass;
23
24 class LabelPrintTest extends TestCase {
25 private Client&MockObject $soapApiClientMock;
26 private MessageManager&MockObject $messageManagerMock;
27 private CarrierLabelService&MockObject $carrierLabelServiceMock;
28
29 protected function createLabelPrintMock(): LabelPrint {
30 $latteEngineMock = $this->createMock( Engine::class );
31 $optionsProviderMock = $this->createMock( OptionsProvider::class );
32 $httpRequestMock = $this->createMock( Request::class );
33 $this->soapApiClientMock = $this->createMock( Client::class );
34 $this->messageManagerMock = $this->createMock( MessageManager::class );
35 $loggerMock = $this->createMock( ILogger::class );
36 $orderRepositoryMock = $this->createMock( Repository::class );
37 $packetActionsCommonLogicMock = $this->createMock( PacketActionsCommonLogic::class );
38 $moduleHelperMock = $this->createMock( ModuleHelper::class );
39 $wpAdapterMock = $this->createMock( WpAdapter::class );
40 $this->carrierLabelServiceMock = $this->createMock( CarrierLabelService::class );
41 $labelPrintParametersServiceMock = $this->createMock( LabelPrintParametersService::class );
42
43 $wpAdapterMock
44 ->method( '__' )
45 ->willReturnCallback(
46 function ( string $msg ) {
47 return $msg;
48 }
49 );
50
51 return new LabelPrint(
52 $latteEngineMock,
53 $optionsProviderMock,
54 $httpRequestMock,
55 $this->soapApiClientMock,
56 $this->messageManagerMock,
57 $loggerMock,
58 $orderRepositoryMock,
59 $packetActionsCommonLogicMock,
60 $moduleHelperMock,
61 $wpAdapterMock,
62 $this->carrierLabelServiceMock,
63 $labelPrintParametersServiceMock,
64 );
65 }
66
67 public static function getResponseTestProvider(): array {
68 return [
69 'packeta labels' => [
70 'isCarrierLabels' => false,
71 'packetIds' => [ '100' => 'PACKET_1' ],
72 'fallbackToPacketaLabel' => false,
73 'idParam' => null,
74 'offset' => 0,
75 'expect' => [
76 'packetaLabelsCalled' => 1,
77 'carrierLabelsCalled' => 0,
78 'flashMessageCount' => 0,
79 'resultClass' => PacketsLabelsPdf::class,
80 ],
81 ],
82 'carrier empty no fallback' => [
83 'isCarrierLabels' => true,
84 'packetIds' => [ '100' => 'PACKET_1' ],
85 'fallbackToPacketaLabel' => false,
86 'idParam' => 123,
87 'offset' => 2,
88 'expect' => [
89 'packetaLabelsCalled' => 0,
90 'carrierLabelsCalled' => 0,
91 'flashMessageCount' => 1,
92 'resultClass' => null,
93 'carrier_numbers' => [],
94 ],
95 ],
96 'carrier empty with fallback' => [
97 'isCarrierLabels' => true,
98 'packetIds' => [ '100' => 'PACKET_1' ],
99 'fallbackToPacketaLabel' => true,
100 'idParam' => null,
101 'offset' => 1,
102 'expect' => [
103 'packetaLabelsCalled' => 1,
104 'carrierLabelsCalled' => 1,
105 'flashMessageCount' => 0,
106 'resultClass' => PacketsLabelsPdf::class,
107 'carrier_numbers' => [],
108 'carrierFault' => true,
109 ],
110 ],
111 'carrier success no fallback needed' => [
112 'isCarrierLabels' => true,
113 'packetIds' => [ '100' => 'PACKET_1' ],
114 'fallbackToPacketaLabel' => true,
115 'idParam' => null,
116 'offset' => 5,
117 'expect' => [
118 'packetaLabelsCalled' => 0,
119 'carrierLabelsCalled' => 1,
120 'flashMessageCount' => 0,
121 'resultClass' => PacketsCourierLabelsPdf::class,
122 'carrier_numbers' => [ '100' => 'COURIER_100' ],
123 'carrierFault' => false,
124 ],
125 ],
126 ];
127 }
128
129 /**
130 * @dataProvider getResponseTestProvider
131 */
132 public function testGetResponse(
133 bool $isCarrierLabels,
134 array $packetIds,
135 bool $fallbackToPacketaLabel,
136 ?int $idParam,
137 int $offset,
138 array $expect
139 ): void {
140 $labelPrint = $this->createLabelPrintMock();
141
142 if ( array_key_exists( 'carrier_numbers', $expect ) ) {
143 $this->carrierLabelServiceMock->method( 'getPacketIdsWithCourierNumbers' )
144 ->with( $packetIds )
145 ->willReturn( $expect['carrier_numbers'] );
146 } else {
147 $this->carrierLabelServiceMock->method( 'getPacketIdsWithCourierNumbers' )
148 ->with( $packetIds )
149 ->willReturn( [ '100' => 'COURIER_100' ] );
150 }
151
152 if ( ( $expect['flashMessageCount'] ?? 0 ) > 0 ) {
153 $this->messageManagerMock
154 ->expects( $this->once() )
155 ->method( 'flash_message' );
156 } else {
157 $this->messageManagerMock
158 ->expects( $this->never() )
159 ->method( 'flash_message' );
160 }
161
162 $carrierCalledTimes = $expect['carrierLabelsCalled'] ?? 0;
163 if ( $carrierCalledTimes > 0 ) {
164 $carrierResponse = new PacketsCourierLabelsPdf();
165 if ( ( $expect['carrierFault'] ?? false ) === true ) {
166 $carrierResponse->setFault( 'SomeFault' );
167 }
168 $this->soapApiClientMock->expects( $this->once() )
169 ->method( 'packetsCarrierLabelsPdf' )
170 ->with( $this->isInstanceOf( \Packetery\Core\Api\Soap\Request\PacketsCourierLabelsPdf::class ) )
171 ->willReturn( $carrierResponse );
172 } else {
173 $this->soapApiClientMock->expects( $this->never() )
174 ->method( 'packetsCarrierLabelsPdf' );
175 }
176
177 $packetaCalledTimes = $expect['packetaLabelsCalled'] ?? 0;
178 if ( $packetaCalledTimes > 0 ) {
179 $packetaResponse = new PacketsLabelsPdf();
180 $this->soapApiClientMock->expects( $this->once() )
181 ->method( 'packetsLabelsPdf' )
182 ->with( $this->isInstanceOf( \Packetery\Core\Api\Soap\Request\PacketsLabelsPdf::class ) )
183 ->willReturn( $packetaResponse );
184 } else {
185 $this->soapApiClientMock->expects( $this->never() )
186 ->method( 'packetsLabelsPdf' );
187 }
188
189 $reflection = new ReflectionClass( LabelPrint::class );
190 $getResponse = $reflection->getMethod( 'getResponse' );
191 $getResponse->setAccessible( true );
192 $result = $getResponse->invoke( $labelPrint, $isCarrierLabels, $packetIds, $fallbackToPacketaLabel, $idParam, $offset );
193
194 if ( $expect['resultClass'] === null ) {
195 $this->assertNull( $result );
196 } else {
197 $this->assertInstanceOf( $expect['resultClass'], $result );
198 }
199 }
200 }
201