25 use Psr\Log\LoggerInterface;
38 private $resourceConnectionMock;
43 private $orderRepositoryMock;
48 private $invoiceDocumentFactoryMock;
53 private $invoiceOrderValidatorMock;
58 private $paymentAdapterMock;
63 private $orderStateResolverMock;
73 private $invoiceRepositoryMock;
78 private $notifierInterfaceMock;
83 private $invoiceOrder;
88 private $invoiceCommentCreationMock;
93 private $invoiceCreationArgumentsMock;
103 private $invoiceMock;
108 private $adapterInterface;
118 private $errorMessagesMock;
122 $this->resourceConnectionMock = $this->getMockBuilder(ResourceConnection::class)
123 ->disableOriginalConstructor()
126 $this->orderRepositoryMock = $this->getMockBuilder(OrderRepositoryInterface::class)
127 ->disableOriginalConstructor()
130 $this->invoiceDocumentFactoryMock = $this->getMockBuilder(InvoiceDocumentFactory::class)
131 ->disableOriginalConstructor()
134 $this->paymentAdapterMock = $this->getMockBuilder(PaymentAdapterInterface::class)
135 ->disableOriginalConstructor()
138 $this->orderStateResolverMock = $this->getMockBuilder(OrderStateResolverInterface::class)
139 ->disableOriginalConstructor()
142 $this->configMock = $this->getMockBuilder(OrderConfig::class)
143 ->disableOriginalConstructor()
146 $this->invoiceRepositoryMock = $this->getMockBuilder(InvoiceRepository::class)
147 ->disableOriginalConstructor()
150 $this->notifierInterfaceMock = $this->getMockBuilder(NotifierInterface::class)
151 ->disableOriginalConstructor()
154 $this->loggerMock = $this->getMockBuilder(LoggerInterface::class)
155 ->disableOriginalConstructor()
158 $this->invoiceCommentCreationMock = $this->getMockBuilder(InvoiceCommentCreationInterface::class)
159 ->disableOriginalConstructor()
162 $this->invoiceCreationArgumentsMock = $this->getMockBuilder(InvoiceCreationArgumentsInterface::class)
163 ->disableOriginalConstructor()
166 $this->orderMock = $this->getMockBuilder(OrderInterface::class)
167 ->disableOriginalConstructor()
170 $this->invoiceMock = $this->getMockBuilder(InvoiceInterface::class)
171 ->disableOriginalConstructor()
174 $this->adapterInterface = $this->getMockBuilder(AdapterInterface::class)
175 ->disableOriginalConstructor()
178 $this->invoiceOrderValidatorMock = $this->getMockBuilder(InvoiceOrderInterface::class)
179 ->disableOriginalConstructor()
182 $this->errorMessagesMock = $this->getMockBuilder(ValidatorResultInterface::class)
183 ->disableOriginalConstructor()
184 ->setMethods([
'hasMessages',
'getMessages',
'addMessage'])
188 $this->resourceConnectionMock,
189 $this->orderRepositoryMock,
190 $this->invoiceDocumentFactoryMock,
191 $this->paymentAdapterMock,
192 $this->orderStateResolverMock,
194 $this->invoiceRepositoryMock,
195 $this->invoiceOrderValidatorMock,
196 $this->notifierInterfaceMock,
213 $this->resourceConnectionMock->expects($this->once())
214 ->method(
'getConnection')
216 ->willReturn($this->adapterInterface);
217 $this->orderRepositoryMock->expects($this->once())
219 ->willReturn($this->orderMock);
220 $this->invoiceDocumentFactoryMock->expects($this->once())
225 $this->invoiceCommentCreationMock,
226 ($appendComment && $notify),
227 $this->invoiceCreationArgumentsMock
228 )->willReturn($this->invoiceMock);
229 $this->invoiceOrderValidatorMock->expects($this->once())
238 $this->invoiceCommentCreationMock,
239 $this->invoiceCreationArgumentsMock
241 ->willReturn($this->errorMessagesMock);
242 $hasMessages =
false;
243 $this->errorMessagesMock->expects($this->once())
244 ->method(
'hasMessages')->willReturn($hasMessages);
245 $this->paymentAdapterMock->expects($this->once())
247 ->with($this->orderMock, $this->invoiceMock, $capture)
248 ->willReturn($this->orderMock);
249 $this->orderStateResolverMock->expects($this->once())
250 ->method(
'getStateForOrder')
253 $this->orderMock->expects($this->once())
257 $this->orderMock->expects($this->once())
260 $this->configMock->expects($this->once())
261 ->method(
'getStateDefaultStatus')
263 ->willReturn(
'Processing');
264 $this->orderMock->expects($this->once())
265 ->method(
'setStatus')
268 $this->invoiceMock->expects($this->once())
272 $this->invoiceRepositoryMock->expects($this->once())
274 ->with($this->invoiceMock)
275 ->willReturn($this->invoiceMock);
276 $this->orderRepositoryMock->expects($this->once())
278 ->with($this->orderMock)
279 ->willReturn($this->orderMock);
281 $this->notifierInterfaceMock->expects($this->once())
283 ->with($this->orderMock, $this->invoiceMock, $this->invoiceCommentCreationMock);
285 $this->invoiceMock->expects($this->once())
286 ->method(
'getEntityId')
291 $this->invoiceOrder->execute(
297 $this->invoiceCommentCreationMock,
298 $this->invoiceCreationArgumentsMock
312 $appendComment =
true;
313 $errorMessages = [
'error1',
'error2'];
315 $this->orderRepositoryMock->expects($this->once())
317 ->willReturn($this->orderMock);
319 $this->invoiceDocumentFactoryMock->expects($this->once())
324 $this->invoiceCommentCreationMock,
325 ($appendComment && $notify),
326 $this->invoiceCreationArgumentsMock
327 )->willReturn($this->invoiceMock);
329 $this->invoiceOrderValidatorMock->expects($this->once())
338 $this->invoiceCommentCreationMock,
339 $this->invoiceCreationArgumentsMock
341 ->willReturn($this->errorMessagesMock);
344 $this->errorMessagesMock->expects($this->once())
345 ->method(
'hasMessages')->willReturn($hasMessages);
346 $this->errorMessagesMock->expects($this->once())
347 ->method(
'getMessages')->willReturn($errorMessages);
349 $this->invoiceOrder->execute(
355 $this->invoiceCommentCreationMock,
356 $this->invoiceCreationArgumentsMock
369 $appendComment =
true;
370 $this->resourceConnectionMock->expects($this->once())
371 ->method(
'getConnection')
373 ->willReturn($this->adapterInterface);
375 $this->orderRepositoryMock->expects($this->once())
377 ->willReturn($this->orderMock);
379 $this->invoiceDocumentFactoryMock->expects($this->once())
384 $this->invoiceCommentCreationMock,
385 ($appendComment && $notify),
386 $this->invoiceCreationArgumentsMock
387 )->willReturn($this->invoiceMock);
389 $this->invoiceOrderValidatorMock->expects($this->once())
398 $this->invoiceCommentCreationMock,
399 $this->invoiceCreationArgumentsMock
401 ->willReturn($this->errorMessagesMock);
403 $hasMessages =
false;
404 $this->errorMessagesMock->expects($this->once())
405 ->method(
'hasMessages')->willReturn($hasMessages);
407 $e = new \Exception();
408 $this->paymentAdapterMock->expects($this->once())
410 ->with($this->orderMock, $this->invoiceMock, $capture)
411 ->willThrowException($e);
413 $this->loggerMock->expects($this->once())
417 $this->adapterInterface->expects($this->once())
418 ->method(
'rollBack');
420 $this->invoiceOrder->execute(
426 $this->invoiceCommentCreationMock,
427 $this->invoiceCreationArgumentsMock
437 'TestWithNotifyTrue' => [1,
true, [1 => 2],
true,
true],
438 'TestWithNotifyFalse' => [1,
true, [1 => 2],
false,
true],
testDocumentValidationException()
testCouldNotInvoiceException()
testOrderInvoice($orderId, $capture, $items, $notify, $appendComment)