Skip to content

Commit 0ef801c

Browse files
committed
MAGETWO-36037: Adding a new event in the action OrderSave
- CR
1 parent da53964 commit 0ef801c

File tree

1 file changed

+152
-182
lines changed

1 file changed

+152
-182
lines changed

app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php

Lines changed: 152 additions & 182 deletions
Original file line numberDiff line numberDiff line change
@@ -63,88 +63,67 @@ class SaveOrderTest extends \PHPUnit_Framework_TestCase
6363
*/
6464
protected $eventManagerMock;
6565

66+
/**
67+
* @var \Magento\Checkout\Model\Type\Onepage|\PHPUnit_Framework_MockObject_MockObject
68+
*/
69+
protected $onepageMock;
70+
71+
/**
72+
* @var \Magento\Checkout\Model\Agreements\AgreementsValidator|\PHPUnit_Framework_MockObject_MockObject
73+
*/
74+
protected $agreementsValidatorMock;
75+
76+
/**
77+
* @var \Magento\Quote\Model\Quote|\PHPUnit_Framework_MockObject_MockObject
78+
*/
79+
protected $quoteMock;
80+
6681
/**
6782
* Set up
6883
*
6984
* @return void
70-
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
7185
*/
7286
protected function setUp()
7387
{
7488
$helper = new ObjectManager($this);
7589

76-
$contextMock = $this->getMock(
77-
'Magento\Framework\App\Action\Context',
78-
[],
79-
[],
80-
'',
81-
false
82-
);
83-
84-
$this->requestMock = $this->getMockForAbstractClass(
85-
'Magento\Framework\App\RequestInterface',
86-
[],
87-
'',
88-
false,
89-
true,
90-
true,
91-
['getPost']
92-
);
93-
$this->responseMock = $this->getMockForAbstractClass(
94-
'Magento\Framework\App\ResponseInterface',
95-
[],
96-
'',
97-
false,
98-
true,
99-
true,
100-
[]
101-
);
102-
$this->objectManagerMock = $this->getMockForAbstractClass(
103-
'Magento\Framework\ObjectManagerInterface',
104-
[],
105-
'',
106-
false,
107-
true,
108-
true,
109-
[]
110-
);
111-
$this->formKeyValidatorMock = $this->getMock(
112-
'Magento\Framework\Data\Form\FormKey\Validator',
113-
[],
114-
[],
115-
'',
116-
false
117-
);
118-
$this->resultRedirectFactoryMock = $this->getMock(
119-
'Magento\Framework\Controller\Result\RedirectFactory',
120-
[],
121-
[],
122-
'',
123-
false
124-
);
125-
$this->resultRawFactoryMock = $this->getMock(
126-
'Magento\Framework\Controller\Result\RawFactory',
127-
[],
128-
[],
129-
'',
130-
false
131-
);
132-
$this->resultJsonFactoryMock = $this->getMock(
133-
'Magento\Framework\Controller\Result\JsonFactory',
134-
[],
135-
[],
136-
'',
137-
false
138-
);
139-
$this->eventManagerMock = $this->getMockForAbstractClass(
140-
'Magento\Framework\Event\ManagerInterface',
141-
[],
142-
'',
143-
false,
144-
true,
145-
true,
146-
[]
147-
);
90+
$contextMock = $this->getMockBuilder('Magento\Framework\App\Action\Context')
91+
->disableOriginalConstructor()
92+
->getMock();
93+
$this->requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface')
94+
->disableOriginalConstructor()
95+
->setMethods(['getPost'])
96+
->getMockForAbstractClass();
97+
$this->responseMock = $this->getMockBuilder('Magento\Framework\App\ResponseInterface')
98+
->disableOriginalConstructor()
99+
->getMockForAbstractClass();
100+
$this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface')
101+
->disableOriginalConstructor()
102+
->getMockForAbstractClass();
103+
$this->formKeyValidatorMock = $this->getMockBuilder('Magento\Framework\Data\Form\FormKey\Validator')
104+
->disableOriginalConstructor()
105+
->getMock();
106+
$this->resultRedirectFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\RedirectFactory')
107+
->disableOriginalConstructor()
108+
->getMock();
109+
$this->resultRawFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\RawFactory')
110+
->disableOriginalConstructor()
111+
->getMock();
112+
$this->resultJsonFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\JsonFactory')
113+
->disableOriginalConstructor()
114+
->getMock();
115+
$this->eventManagerMock = $this->getMockBuilder('Magento\Framework\Event\ManagerInterface')
116+
->disableOriginalConstructor()
117+
->getMockForAbstractClass();
118+
$this->onepageMock = $this->getMockBuilder('Magento\Checkout\Model\Type\Onepage')
119+
->disableOriginalConstructor()
120+
->getMock();
121+
$this->agreementsValidatorMock = $this->getMockBuilder('Magento\Checkout\Model\Agreements\AgreementsValidator')
122+
->disableOriginalConstructor()
123+
->getMock();
124+
$this->quoteMock = $this->getMockBuilder('Magento\Quote\Model\Quote')
125+
->disableOriginalConstructor()
126+
->getMock();
148127

149128
$contextMock->expects($this->once())
150129
->method('getRequest')
@@ -174,73 +153,53 @@ protected function setUp()
174153
}
175154

176155
/**
177-
* Test for execute method
156+
* Test method execution _expireAjax (call hasItems === false)
178157
*
179158
* @return void
180-
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
181159
*/
182-
public function testExecute()
160+
protected function expireAjaxFlowHasItemsFalse()
183161
{
184-
$data = [
185-
'payment-key-1' => 'payment-value-1',
186-
'checks' => [
187-
\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT,
188-
\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY,
189-
\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY,
190-
\Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
191-
\Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL,
192-
]
193-
];
162+
$this->onepageMock->expects($this->atLeastOnce())
163+
->method('getQuote')
164+
->willReturn($this->quoteMock);
194165

195-
$onepageMock = $this->getMock(
196-
'Magento\Checkout\Model\Type\Onepage',
197-
[],
198-
[],
199-
'',
200-
false
201-
);
202-
$redirectMock = $this->getMock(
203-
'Magento\Framework\Controller\Result\Redirect',
204-
[],
205-
[],
206-
'',
207-
false
208-
);
209-
$quoteMock = $this->getMock(
210-
'Magento\Quote\Model\Quote',
211-
[],
212-
[],
213-
'',
214-
false
215-
);
216-
$agreementsValidatorMock = $this->getMock(
217-
'Magento\Checkout\Model\Agreements\AgreementsValidator',
218-
[],
219-
[],
220-
'',
221-
false
222-
);
223-
$paymentMock = $this->getMock(
224-
'Magento\Quote\Model\Quote\Payment',
225-
[],
226-
[],
227-
'',
228-
false
229-
);
230-
$checkoutMock = $this->getMock(
231-
'Magento\Checkout\Model\Session',
232-
['getRedirectUrl'],
233-
[],
234-
'',
235-
false
236-
);
237-
$resultJsonMock = $this->getMock(
238-
'Magento\Framework\Controller\Result\Json',
239-
[],
240-
[],
241-
'',
242-
false
243-
);
166+
$this->quoteMock->expects($this->once())
167+
->method('hasItems')
168+
->willReturn(false);
169+
$this->quoteMock->expects($this->never())
170+
->method('getHasError')
171+
->willReturn(true);
172+
$this->quoteMock->expects($this->never())
173+
->method('validateMinimumAmount')
174+
->willReturn(false);
175+
176+
$this->requestMock->expects($this->never())
177+
->method('getActionName');
178+
}
179+
180+
/**
181+
* Test for execute method
182+
*
183+
* @return void
184+
*/
185+
public function testExecuteWithSuccessOrderSave()
186+
{
187+
$testData = $this->getExecuteWithSuccessOrderSaveTestData();
188+
189+
190+
$redirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect')
191+
->disableOriginalConstructor()
192+
->getMock();
193+
$paymentMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Payment')
194+
->disableOriginalConstructor()
195+
->getMock();
196+
$checkoutMock = $this->getMockBuilder('Magento\Checkout\Model\Session')
197+
->disableOriginalConstructor()
198+
->setMethods(['getRedirectUrl'])
199+
->getMock();
200+
$resultJsonMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Json')
201+
->disableOriginalConstructor()
202+
->getMock();
244203

245204
$redirectMock->expects($this->never())
246205
->method('setPath')
@@ -258,70 +217,34 @@ public function testExecute()
258217

259218
$this->objectManagerMock->expects($this->atLeastOnce())
260219
->method('get')
261-
->willReturnMap(
262-
[
263-
['Magento\Checkout\Model\Type\Onepage', $onepageMock],
264-
['Magento\Checkout\Model\Agreements\AgreementsValidator', $agreementsValidatorMock],
265-
]
266-
);
220+
->willReturnMap($testData['objectManager.get']);
267221

268222
// call _expireAjax method
269-
$onepageMock->expects($this->atLeastOnce())
270-
->method('getQuote')
271-
->willReturn($quoteMock);
272-
273-
$quoteMock->expects($this->once())
274-
->method('hasItems')
275-
->willReturn(false);
276-
$quoteMock->expects($this->never())
277-
->method('getHasError')
278-
->willReturn(true);
279-
$quoteMock->expects($this->never())
280-
->method('validateMinimumAmount')
281-
->willReturn(false);
282-
283-
$this->requestMock->expects($this->never())
284-
->method('getActionName');
285-
// -- end
223+
$this->expireAjaxFlowHasItemsFalse();
286224

287225
$this->requestMock->expects($this->atLeastOnce())
288226
->method('getPost')
289-
->willReturnMap(
290-
[
291-
[
292-
'agreement',
293-
[],
294-
[
295-
'test-key-1' => 'test-value-1'
296-
]
297-
],
298-
[
299-
'payment',
300-
[],
301-
$data
302-
],
303-
]
304-
);
227+
->willReturnMap($testData['request.getPost']);
305228

306-
$agreementsValidatorMock->expects($this->once())
229+
$this->agreementsValidatorMock->expects($this->once())
307230
->method('isValid')
308-
->with(['test-key-1'])
231+
->with($testData['agreementsValidator.isValid'])
309232
->willReturn(true);
310233

311-
$quoteMock->expects($this->atLeastOnce())
234+
$this->quoteMock->expects($this->atLeastOnce())
312235
->method('getPayment')
313236
->willReturn($paymentMock);
314237

315238
$paymentMock->expects($this->once())
316239
->method('setQuote')
317-
->with($quoteMock);
240+
->with($this->quoteMock);
318241
$paymentMock->expects($this->once())
319242
->method('importData')
320-
->with($data);
243+
->with($testData['payment.importData']);
321244

322-
$onepageMock->expects($this->once())
245+
$this->onepageMock->expects($this->once())
323246
->method('saveOrder');
324-
$onepageMock->expects($this->once())
247+
$this->onepageMock->expects($this->once())
325248
->method('getCheckout')
326249
->willReturn($checkoutMock);
327250

@@ -342,9 +265,56 @@ public function testExecute()
342265

343266
$resultJsonMock->expects($this->once())
344267
->method('setData')
345-
->with(['success' => 1, 'error' => false])
268+
->with($testData['resultJson.setData'])
346269
->willReturnSelf();
347270

348271
$this->assertEquals($resultJsonMock, $this->controller->execute());
349272
}
273+
274+
/**
275+
* Get data for test testExecuteWithSuccessOrderSave
276+
*
277+
* @return array
278+
*/
279+
protected function getExecuteWithSuccessOrderSaveTestData()
280+
{
281+
$data = [
282+
'payment-key-1' => 'payment-value-1',
283+
'checks' => [
284+
\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT,
285+
\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY,
286+
\Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY,
287+
\Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
288+
\Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL,
289+
]
290+
];
291+
$testKey = 'test-key-1';
292+
293+
return [
294+
'resultJson.setData' => [
295+
'success' => 1,
296+
'error' => false
297+
],
298+
'request.getPost' => [
299+
[
300+
'agreement',
301+
[],
302+
[
303+
$testKey => 'test-value-1'
304+
]
305+
],
306+
[
307+
'payment',
308+
[],
309+
$data
310+
],
311+
],
312+
'payment.importData' => $data,
313+
'agreementsValidator.isValid' => [$testKey],
314+
'objectManager.get' => [
315+
['Magento\Checkout\Model\Type\Onepage', $this->onepageMock],
316+
['Magento\Checkout\Model\Agreements\AgreementsValidator', $this->agreementsValidatorMock],
317+
]
318+
];
319+
}
350320
}

0 commit comments

Comments
 (0)