loggerMock = $this->createMock(\Psr\Log\LoggerInterface::class); $this->quoteMock = $this->createMock(\Magento\Quote\Model\Quote::class); $this->orderMock = $this->createMock(\Magento\Sales\Model\Order::class); $this->paymentMock = $this->createMock(\Magento\Quote\Model\Quote\Payment::class); $this->orderSenderMock = $this->createMock(\Magento\Sales\Model\Order\Email\Sender\OrderSender::class); $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class) ->disableOriginalConstructor() ->setMethods(['getQuote', 'getOrder']) ->getMock(); $this->observerMock = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getEvent']); $this->observerMock->expects($this->any())->method('getEvent')->willReturn($eventMock); $eventMock->expects($this->once())->method('getQuote')->willReturn($this->quoteMock); $eventMock->expects($this->once())->method('getOrder')->willReturn($this->orderMock); $this->quoteMock->expects($this->once())->method('getPayment')->willReturn($this->paymentMock); $this->model = new \Magento\Quote\Observer\SubmitObserver( $this->loggerMock, $this->orderSenderMock ); } public function testSendEmail() { $this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn(''); $this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag')->willReturn(true); $this->orderSenderMock->expects($this->once())->method('send')->willReturn(true); $this->loggerMock->expects($this->never())->method('critical'); $this->model->execute($this->observerMock); } public function testFailToSendEmail() { $this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn(''); $this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag')->willReturn(true); $this->orderSenderMock->expects($this->once())->method('send')->willThrowException( new \Exception('Some email sending Error') ); $this->loggerMock->expects($this->once())->method('critical'); $this->model->execute($this->observerMock); } public function testSendEmailWhenRedirectUrlExists() { $this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn(false); $this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag'); $this->orderSenderMock->expects($this->never())->method('send'); $this->loggerMock->expects($this->never())->method('critical'); $this->model->execute($this->observerMock); } }