Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SubmitObserverTest.php
Go to the documentation of this file.
1 <?php
7 
8 class SubmitObserverTest extends \PHPUnit\Framework\TestCase
9 {
13  protected $model;
14 
18  protected $loggerMock;
19 
23  protected $orderSenderMock;
24 
28  protected $observerMock;
29 
33  protected $quoteMock;
34 
38  protected $orderMock;
39 
43  protected $paymentMock;
44 
45  protected function setUp()
46  {
47  $this->loggerMock = $this->createMock(\Psr\Log\LoggerInterface::class);
48  $this->quoteMock = $this->createMock(\Magento\Quote\Model\Quote::class);
49  $this->orderMock = $this->createMock(\Magento\Sales\Model\Order::class);
50  $this->paymentMock = $this->createMock(\Magento\Quote\Model\Quote\Payment::class);
51  $this->orderSenderMock =
52  $this->createMock(\Magento\Sales\Model\Order\Email\Sender\OrderSender::class);
53  $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
54  ->disableOriginalConstructor()
55  ->setMethods(['getQuote', 'getOrder'])
56  ->getMock();
57  $this->observerMock = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getEvent']);
58  $this->observerMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
59  $eventMock->expects($this->once())->method('getQuote')->willReturn($this->quoteMock);
60  $eventMock->expects($this->once())->method('getOrder')->willReturn($this->orderMock);
61  $this->quoteMock->expects($this->once())->method('getPayment')->willReturn($this->paymentMock);
62  $this->model = new \Magento\Quote\Observer\SubmitObserver(
63  $this->loggerMock,
64  $this->orderSenderMock
65  );
66  }
67 
68  public function testSendEmail()
69  {
70  $this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn('');
71  $this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag')->willReturn(true);
72  $this->orderSenderMock->expects($this->once())->method('send')->willReturn(true);
73  $this->loggerMock->expects($this->never())->method('critical');
74  $this->model->execute($this->observerMock);
75  }
76 
77  public function testFailToSendEmail()
78  {
79  $this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn('');
80  $this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag')->willReturn(true);
81  $this->orderSenderMock->expects($this->once())->method('send')->willThrowException(
82  new \Exception('Some email sending Error')
83  );
84  $this->loggerMock->expects($this->once())->method('critical');
85  $this->model->execute($this->observerMock);
86  }
87 
89  {
90  $this->paymentMock->expects($this->once())->method('getOrderPlaceRedirectUrl')->willReturn(false);
91  $this->orderMock->expects($this->once())->method('getCanSendNewEmailFlag');
92  $this->orderSenderMock->expects($this->never())->method('send');
93  $this->loggerMock->expects($this->never())->method('critical');
94  $this->model->execute($this->observerMock);
95  }
96 }