5
5
*/
6
6
namespace Magento \Quote \Test \Unit \Observer ;
7
7
8
+ use Magento \Framework \Event ;
9
+ use Magento \Framework \Event \Observer ;
10
+ use Magento \Quote \Model \Quote ;
11
+ use Magento \Quote \Model \Quote \Payment ;
12
+ use Magento \Quote \Observer \SubmitObserver ;
13
+ use Magento \Sales \Model \Order ;
14
+ use Magento \Sales \Model \Order \Email \Sender \InvoiceSender ;
15
+ use Magento \Sales \Model \Order \Email \Sender \OrderSender ;
16
+ use Magento \Sales \Model \Order \Invoice ;
17
+ use Magento \Sales \Model \ResourceModel \Order \Invoice \Collection ;
18
+ use Psr \Log \LoggerInterface ;
19
+
20
+ /**
21
+ * Class SubmitObserverTest
22
+ */
8
23
class SubmitObserverTest extends \PHPUnit \Framework \TestCase
9
24
{
10
25
/**
11
- * @var \Magento\Quote\Observer\ SubmitObserver
26
+ * @var SubmitObserver
12
27
*/
13
- protected $ model ;
28
+ private $ model ;
14
29
15
30
/**
16
- * @var \Psr\Log\ LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
31
+ * @var LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
17
32
*/
18
- protected $ loggerMock ;
33
+ private $ loggerMock ;
19
34
20
35
/**
21
- * @var \Magento\Sales\Model\Order\Email\Sender\ OrderSender|\PHPUnit_Framework_MockObject_MockObject
36
+ * @var OrderSender|\PHPUnit_Framework_MockObject_MockObject
22
37
*/
23
- protected $ orderSenderMock ;
38
+ private $ orderSenderMock ;
24
39
25
40
/**
26
- * @var \Magento\Framework\Event\Observer |\PHPUnit_Framework_MockObject_MockObject
41
+ * @var InvoiceSender |\PHPUnit_Framework_MockObject_MockObject
27
42
*/
28
- protected $ observerMock ;
43
+ private $ invoiceSender ;
29
44
30
45
/**
31
- * @var \Magento\Quote\Model\Quote |\PHPUnit_Framework_MockObject_MockObject
46
+ * @var Observer |\PHPUnit_Framework_MockObject_MockObject
32
47
*/
33
- protected $ quoteMock ;
48
+ private $ observerMock ;
34
49
35
50
/**
36
- * @var \Magento\Sales\Model\Order |\PHPUnit_Framework_MockObject_MockObject
51
+ * @var Quote |\PHPUnit_Framework_MockObject_MockObject
37
52
*/
38
- protected $ orderMock ;
53
+ private $ quoteMock ;
39
54
40
55
/**
41
- * @var \Magento\Quote\Model\Quote\Payment |\PHPUnit_Framework_MockObject_MockObject
56
+ * @var Order |\PHPUnit_Framework_MockObject_MockObject
42
57
*/
43
- protected $ paymentMock ;
58
+ private $ orderMock ;
59
+
60
+ /**
61
+ * @var Payment|\PHPUnit_Framework_MockObject_MockObject
62
+ */
63
+ private $ paymentMock ;
44
64
45
65
protected function setUp ()
46
66
{
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)
67
+ $ this ->loggerMock = $ this ->createMock (LoggerInterface::class);
68
+ $ this ->quoteMock = $ this ->createMock (Quote::class);
69
+ $ this ->orderMock = $ this ->createMock (Order::class);
70
+ $ this ->paymentMock = $ this ->createMock (Payment::class);
71
+ $ this ->orderSenderMock = $ this -> createMock (OrderSender::class);
72
+ $ this -> invoiceSender = $ this ->createMock (InvoiceSender ::class);
73
+ $ eventMock = $ this ->getMockBuilder (Event::class)
54
74
->disableOriginalConstructor ()
55
75
->setMethods (['getQuote ' , 'getOrder ' ])
56
76
->getMock ();
57
- $ this ->observerMock = $ this ->createPartialMock (\ Magento \ Framework \ Event \ Observer::class, ['getEvent ' ]);
77
+ $ this ->observerMock = $ this ->createPartialMock (Observer::class, ['getEvent ' ]);
58
78
$ this ->observerMock ->expects ($ this ->any ())->method ('getEvent ' )->willReturn ($ eventMock );
59
79
$ eventMock ->expects ($ this ->once ())->method ('getQuote ' )->willReturn ($ this ->quoteMock );
60
80
$ eventMock ->expects ($ this ->once ())->method ('getOrder ' )->willReturn ($ this ->orderMock );
61
81
$ this ->quoteMock ->expects ($ this ->once ())->method ('getPayment ' )->willReturn ($ this ->paymentMock );
62
- $ this ->model = new \ Magento \ Quote \ Observer \ SubmitObserver (
82
+ $ this ->model = new SubmitObserver (
63
83
$ this ->loggerMock ,
64
- $ this ->orderSenderMock
84
+ $ this ->orderSenderMock ,
85
+ $ this ->invoiceSender
65
86
);
66
87
}
67
88
89
+ /**
90
+ * Tests successful email sending.
91
+ */
68
92
public function testSendEmail ()
69
93
{
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 ' );
94
+ $ this ->paymentMock ->method ('getOrderPlaceRedirectUrl ' )->willReturn ('' );
95
+ $ invoice = $ this ->createMock (Invoice::class);
96
+ $ invoiceCollection = $ this ->createMock (Collection::class);
97
+ $ invoiceCollection ->method ('getItems ' )
98
+ ->willReturn ([$ invoice ]);
99
+
100
+ $ this ->orderMock ->method ('getInvoiceCollection ' )
101
+ ->willReturn ($ invoiceCollection );
102
+ $ this ->orderMock ->method ('getCanSendNewEmailFlag ' )->willReturn (true );
103
+ $ this ->orderSenderMock ->expects ($ this ->once ())
104
+ ->method ('send ' )->willReturn (true );
105
+ $ this ->invoiceSender ->expects ($ this ->once ())
106
+ ->method ('send ' )
107
+ ->with ($ invoice )
108
+ ->willReturn (true );
109
+ $ this ->loggerMock ->expects ($ this ->never ())
110
+ ->method ('critical ' );
111
+
74
112
$ this ->model ->execute ($ this ->observerMock );
75
113
}
76
114
115
+ /**
116
+ * Tests failing email sending.
117
+ */
77
118
public function testFailToSendEmail ()
78
119
{
79
120
$ this ->paymentMock ->expects ($ this ->once ())->method ('getOrderPlaceRedirectUrl ' )->willReturn ('' );
@@ -85,6 +126,9 @@ public function testFailToSendEmail()
85
126
$ this ->model ->execute ($ this ->observerMock );
86
127
}
87
128
129
+ /**
130
+ * Tests send email when redirect.
131
+ */
88
132
public function testSendEmailWhenRedirectUrlExists ()
89
133
{
90
134
$ this ->paymentMock ->expects ($ this ->once ())->method ('getOrderPlaceRedirectUrl ' )->willReturn (false );
0 commit comments