From c174f3ecc84e9b7b70d246524e0ac0715b5e2a8b Mon Sep 17 00:00:00 2001 From: "Gurzhyi, Andrii" Date: Mon, 20 Apr 2015 20:16:57 +0300 Subject: [PATCH 1/6] MAGETWO-36037: Adding a new event in the action OrderSave --- .../Checkout/Controller/Onepage/SaveOrder.php | 67 ++++++++++++------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php b/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php index 04141e448fec9..43b7e4c0dcdae 100644 --- a/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php +++ b/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php @@ -5,6 +5,7 @@ */ namespace Magento\Checkout\Controller\Onepage; +use Magento\Framework\Object; use Magento\Framework\Exception\PaymentException; class SaveOrder extends \Magento\Checkout\Controller\Onepage @@ -26,16 +27,17 @@ public function execute() return $this->_ajaxRedirectResponse(); } - $result = []; + $result = new Object(); try { $agreementsValidator = $this->_objectManager->get('Magento\Checkout\Model\Agreements\AgreementsValidator'); if (!$agreementsValidator->isValid(array_keys($this->getRequest()->getPost('agreement', [])))) { - $result['success'] = false; - $result['error'] = true; - $result['error_messages'] = __( - 'Please agree to all the terms and conditions before placing the order.' + $result->setData('success', false); + $result->setData('error', true); + $result->setData( + 'error_messages', + __('Please agree to all the terms and conditions before placing the order.') ); - return $this->resultJsonFactory->create()->setData($result); + return $this->resultJsonFactory->create()->setData($result->getData()); } $data = $this->getRequest()->getPost('payment', []); @@ -54,25 +56,34 @@ public function execute() $this->getOnepage()->saveOrder(); $redirectUrl = $this->getOnepage()->getCheckout()->getRedirectUrl(); - $result['success'] = true; - $result['error'] = false; + $result->setData('success', true); + $result->setData('error', false); } catch (PaymentException $e) { $message = $e->getMessage(); if (!empty($message)) { - $result['error_messages'] = $message; + $result->setData('error_messages', $message); } - $result['goto_section'] = 'payment'; - $result['update_section'] = ['name' => 'payment-method', 'html' => $this->_getPaymentMethodsHtml()]; + $result->setData('goto_section', 'payment'); + $result->setData( + 'update_section', + [ + 'name' => 'payment-method', + 'html' => $this->_getPaymentMethodsHtml() + ] + ); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); $this->_objectManager->get('Magento\Checkout\Helper\Data') ->sendPaymentFailedEmail($this->getOnepage()->getQuote(), $e->getMessage()); - $result['success'] = false; - $result['error'] = true; - $result['error_messages'] = $e->getMessage(); + $result->setData( + 'success', + false + ); + $result->setData('error', true); + $result->setData('error_messages', $e->getMessage()); $gotoSection = $this->getOnepage()->getCheckout()->getGotoSection(); if ($gotoSection) { - $result['goto_section'] = $gotoSection; + $result->setData('goto_section', $gotoSection); $this->getOnepage()->getCheckout()->setGotoSection(null); } @@ -80,10 +91,13 @@ public function execute() if ($updateSection) { if (isset($this->_sectionUpdateFunctions[$updateSection])) { $updateSectionFunction = $this->_sectionUpdateFunctions[$updateSection]; - $result['update_section'] = [ - 'name' => $updateSection, - 'html' => $this->{$updateSectionFunction}(), - ]; + $result->setData( + 'update_section', + [ + 'name' => $updateSection, + 'html' => $this->{$updateSectionFunction}(), + ] + ); } $this->getOnepage()->getCheckout()->setUpdateSection(null); } @@ -91,18 +105,23 @@ public function execute() $this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e); $this->_objectManager->get('Magento\Checkout\Helper\Data') ->sendPaymentFailedEmail($this->getOnepage()->getQuote(), $e->getMessage()); - $result['success'] = false; - $result['error'] = true; - $result['error_messages'] = __('Something went wrong processing your order. Please try again later.'); + $result->setData('success', false); + $result->setData('error', true); + $result->setData( + 'error_messages', + __('Something went wrong processing your order. Please try again later.') + ); } /** * when there is redirect to third party, we don't want to save order yet. * we will save the order in return action. */ if (isset($redirectUrl)) { - $result['redirect'] = $redirectUrl; + $result->setData('redirect', $redirectUrl); } - return $this->resultJsonFactory->create()->setData($result); + $this->_eventManager->dispatch('checkout_controller_onepage_saveOrder', ['result' => $result]); + + return $this->resultJsonFactory->create()->setData($result->getData()); } } From 1d0e552958cfe32928685ef45659d84609ee4b23 Mon Sep 17 00:00:00 2001 From: "Gurzhyi, Andrii" Date: Tue, 21 Apr 2015 14:45:35 +0300 Subject: [PATCH 2/6] MAGETWO-36037: Adding a new event in the action OrderSave - insert the current Object action --- .../Magento/Checkout/Controller/Onepage/SaveOrder.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php b/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php index 43b7e4c0dcdae..7249f26f18540 100644 --- a/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php +++ b/app/code/Magento/Checkout/Controller/Onepage/SaveOrder.php @@ -120,7 +120,13 @@ public function execute() $result->setData('redirect', $redirectUrl); } - $this->_eventManager->dispatch('checkout_controller_onepage_saveOrder', ['result' => $result]); + $this->_eventManager->dispatch( + 'checkout_controller_onepage_saveOrder', + [ + 'result' => $result, + 'action' => $this + ] + ); return $this->resultJsonFactory->create()->setData($result->getData()); } From a260535dcf3098526120925f4685d530e33c44f5 Mon Sep 17 00:00:00 2001 From: "Gurzhyi, Andrii" Date: Tue, 21 Apr 2015 21:12:19 +0300 Subject: [PATCH 3/6] MAGETWO-36037: Adding a new event in the action OrderSave - new test --- .../Unit/Controller/Onepage/SaveOrderTest.php | 347 ++++++++++++++++++ 1 file changed, 347 insertions(+) create mode 100644 app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php new file mode 100644 index 0000000000000..a9c954ea227a3 --- /dev/null +++ b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php @@ -0,0 +1,347 @@ +getMock( + 'Magento\Framework\App\Action\Context', + [], + [], + '', + false + ); + + $this->requestMock = $this->getMockForAbstractClass( + 'Magento\Framework\App\RequestInterface', + [], + '', + false, + true, + true, + ['getPost'] + ); + $this->responseMock = $this->getMockForAbstractClass( + 'Magento\Framework\App\ResponseInterface', + [], + '', + false, + true, + true, + [] + ); + $this->objectManagerMock = $this->getMockForAbstractClass( + 'Magento\Framework\ObjectManagerInterface', + [], + '', + false, + true, + true, + [] + ); + $this->formKeyValidatorMock = $this->getMock( + 'Magento\Framework\Data\Form\FormKey\Validator', + [], + [], + '', + false + ); + $this->resultRedirectFactoryMock = $this->getMock( + 'Magento\Framework\Controller\Result\RedirectFactory', + [], + [], + '', + false + ); + $this->resultRawFactoryMock = $this->getMock( + 'Magento\Framework\Controller\Result\RawFactory', + [], + [], + '', + false + ); + $this->resultJsonFactoryMock = $this->getMock( + 'Magento\Framework\Controller\Result\JsonFactory', + [], + [], + '', + false + ); + $this->eventManagerMock = $this->getMockForAbstractClass( + 'Magento\Framework\Event\ManagerInterface', + [], + '', + false, + true, + true, + [] + ); + + $contextMock->expects($this->once()) + ->method('getRequest') + ->willReturn($this->requestMock); + $contextMock->expects($this->once()) + ->method('getResponse') + ->willReturn($this->responseMock); + $contextMock->expects($this->once()) + ->method('getObjectManager') + ->willReturn($this->objectManagerMock); + $contextMock->expects($this->once()) + ->method('getResultRedirectFactory') + ->willReturn($this->resultRedirectFactoryMock); + $contextMock->expects($this->once()) + ->method('getEventManager') + ->willReturn($this->eventManagerMock); + + $this->controller = $helper->getObject( + 'Magento\Checkout\Controller\Onepage\SaveOrder', + [ + 'context' => $contextMock, + 'formKeyValidator' => $this->formKeyValidatorMock, + 'resultRawFactory' => $this->resultRawFactoryMock, + 'resultJsonFactory' => $this->resultJsonFactoryMock, + ] + ); + } + + /** + * Test for execute method + * + * @return void + */ + public function testExecute() + { + $data = [ + 'payment-key-1' => 'payment-value-1', + 'checks' => [ + \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL, + ] + ]; + + $onepageMock = $this->getMock( + 'Magento\Checkout\Model\Type\Onepage', + [], + [], + '', + false + ); + $redirectMock = $this->getMock( + 'Magento\Framework\Controller\Result\Redirect', + [], + [], + '', + false + ); + $quoteMock = $this->getMock( + 'Magento\Quote\Model\Quote', + [], + [], + '', + false + ); + $agreementsValidatorMock = $this->getMock( + 'Magento\Checkout\Model\Agreements\AgreementsValidator', + [], + [], + '', + false + ); + $paymentMock = $this->getMock( + 'Magento\Quote\Model\Quote\Payment', + [], + [], + '', + false + ); + $checkoutMock = $this->getMock( + 'Magento\Checkout\Model\Session', + ['getRedirectUrl'], + [], + '', + false + ); + $resultJsonMock = $this->getMock( + 'Magento\Framework\Controller\Result\Json', + [], + [], + '', + false + ); + + $redirectMock->expects($this->never()) + ->method('setPath') + ->with('*/*/') + ->willReturn('redirect'); + + $this->formKeyValidatorMock->expects($this->once()) + ->method('validate') + ->with($this->requestMock) + ->willReturn(true); + + $this->resultRedirectFactoryMock->expects($this->never()) + ->method('create') + ->willReturn($redirectMock); + + $this->objectManagerMock->expects($this->atLeastOnce()) + ->method('get') + ->willReturnMap( + [ + ['Magento\Checkout\Model\Type\Onepage', $onepageMock], + ['Magento\Checkout\Model\Agreements\AgreementsValidator', $agreementsValidatorMock], + ] + ); + // call _expireAjax method + $onepageMock->expects($this->atLeastOnce()) + ->method('getQuote') + ->willReturn($quoteMock); + + $quoteMock->expects($this->once()) + ->method('hasItems') + ->willReturn(false); + $quoteMock->expects($this->never()) + ->method('getHasError') + ->willReturn(true); + $quoteMock->expects($this->never()) + ->method('validateMinimumAmount') + ->willReturn(false); + + $this->requestMock->expects($this->never()) + ->method('getActionName'); + // -- end + + $this->requestMock->expects($this->atLeastOnce()) + ->method('getPost') + ->willReturnMap( + [ + [ + 'agreement', + [], + [ + 'test-key-1' => 'test-value-1' + ] + ], + [ + 'payment', + [], + $data + ], + ] + ); + + $agreementsValidatorMock->expects($this->once()) + ->method('isValid') + ->with(['test-key-1']) + ->willReturn(true); + + $quoteMock->expects($this->atLeastOnce()) + ->method('getPayment') + ->willReturn($paymentMock); + + $paymentMock->expects($this->once()) + ->method('setQuote') + ->with($quoteMock); + $paymentMock->expects($this->once()) + ->method('importData') + ->with($data); + + $onepageMock->expects($this->once()) + ->method('saveOrder'); + $onepageMock->expects($this->once()) + ->method('getCheckout') + ->willReturn($checkoutMock); + + $checkoutMock->expects($this->once()) + ->method('getRedirectUrl') + ->willReturn(null); + + $this->eventManagerMock->expects($this->once()) + ->method('dispatch') + ->withConsecutive( + $this->equalTo('checkout_controller_onepage_saveOrder'), + $this->countOf(2) + ); + + $this->resultJsonFactoryMock->expects($this->once()) + ->method('create') + ->willReturn($resultJsonMock); + + $resultJsonMock->expects($this->once()) + ->method('setData') + ->with(['success' => 1, 'error' => false]) + ->willReturnSelf(); + + $this->assertEquals($resultJsonMock, $this->controller->execute()); + } +} From da539646ba43971c1e3297429b5670091f225fab Mon Sep 17 00:00:00 2001 From: "Gurzhyi, Andrii" Date: Wed, 22 Apr 2015 13:16:08 +0300 Subject: [PATCH 4/6] MAGETWO-36037: Adding a new event in the action OrderSave - fixed static test --- .../Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php index a9c954ea227a3..be75b3a235aca 100644 --- a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php +++ b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php @@ -67,6 +67,7 @@ class SaveOrderTest extends \PHPUnit_Framework_TestCase * Set up * * @return void + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ protected function setUp() { @@ -176,6 +177,7 @@ protected function setUp() * Test for execute method * * @return void + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testExecute() { @@ -262,6 +264,7 @@ public function testExecute() ['Magento\Checkout\Model\Agreements\AgreementsValidator', $agreementsValidatorMock], ] ); + // call _expireAjax method $onepageMock->expects($this->atLeastOnce()) ->method('getQuote') From 0ef801cafcac18dc790d46699a70746261b28687 Mon Sep 17 00:00:00 2001 From: "Gurzhyi, Andrii" Date: Wed, 22 Apr 2015 17:19:38 +0300 Subject: [PATCH 5/6] MAGETWO-36037: Adding a new event in the action OrderSave - CR --- .../Unit/Controller/Onepage/SaveOrderTest.php | 334 ++++++++---------- 1 file changed, 152 insertions(+), 182 deletions(-) diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php index be75b3a235aca..af7d1574487c4 100644 --- a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php +++ b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php @@ -63,88 +63,67 @@ class SaveOrderTest extends \PHPUnit_Framework_TestCase */ protected $eventManagerMock; + /** + * @var \Magento\Checkout\Model\Type\Onepage|\PHPUnit_Framework_MockObject_MockObject + */ + protected $onepageMock; + + /** + * @var \Magento\Checkout\Model\Agreements\AgreementsValidator|\PHPUnit_Framework_MockObject_MockObject + */ + protected $agreementsValidatorMock; + + /** + * @var \Magento\Quote\Model\Quote|\PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteMock; + /** * Set up * * @return void - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ protected function setUp() { $helper = new ObjectManager($this); - $contextMock = $this->getMock( - 'Magento\Framework\App\Action\Context', - [], - [], - '', - false - ); - - $this->requestMock = $this->getMockForAbstractClass( - 'Magento\Framework\App\RequestInterface', - [], - '', - false, - true, - true, - ['getPost'] - ); - $this->responseMock = $this->getMockForAbstractClass( - 'Magento\Framework\App\ResponseInterface', - [], - '', - false, - true, - true, - [] - ); - $this->objectManagerMock = $this->getMockForAbstractClass( - 'Magento\Framework\ObjectManagerInterface', - [], - '', - false, - true, - true, - [] - ); - $this->formKeyValidatorMock = $this->getMock( - 'Magento\Framework\Data\Form\FormKey\Validator', - [], - [], - '', - false - ); - $this->resultRedirectFactoryMock = $this->getMock( - 'Magento\Framework\Controller\Result\RedirectFactory', - [], - [], - '', - false - ); - $this->resultRawFactoryMock = $this->getMock( - 'Magento\Framework\Controller\Result\RawFactory', - [], - [], - '', - false - ); - $this->resultJsonFactoryMock = $this->getMock( - 'Magento\Framework\Controller\Result\JsonFactory', - [], - [], - '', - false - ); - $this->eventManagerMock = $this->getMockForAbstractClass( - 'Magento\Framework\Event\ManagerInterface', - [], - '', - false, - true, - true, - [] - ); + $contextMock = $this->getMockBuilder('Magento\Framework\App\Action\Context') + ->disableOriginalConstructor() + ->getMock(); + $this->requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface') + ->disableOriginalConstructor() + ->setMethods(['getPost']) + ->getMockForAbstractClass(); + $this->responseMock = $this->getMockBuilder('Magento\Framework\App\ResponseInterface') + ->disableOriginalConstructor() + ->getMockForAbstractClass(); + $this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface') + ->disableOriginalConstructor() + ->getMockForAbstractClass(); + $this->formKeyValidatorMock = $this->getMockBuilder('Magento\Framework\Data\Form\FormKey\Validator') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRedirectFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\RedirectFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultRawFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\RawFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->resultJsonFactoryMock = $this->getMockBuilder('Magento\Framework\Controller\Result\JsonFactory') + ->disableOriginalConstructor() + ->getMock(); + $this->eventManagerMock = $this->getMockBuilder('Magento\Framework\Event\ManagerInterface') + ->disableOriginalConstructor() + ->getMockForAbstractClass(); + $this->onepageMock = $this->getMockBuilder('Magento\Checkout\Model\Type\Onepage') + ->disableOriginalConstructor() + ->getMock(); + $this->agreementsValidatorMock = $this->getMockBuilder('Magento\Checkout\Model\Agreements\AgreementsValidator') + ->disableOriginalConstructor() + ->getMock(); + $this->quoteMock = $this->getMockBuilder('Magento\Quote\Model\Quote') + ->disableOriginalConstructor() + ->getMock(); $contextMock->expects($this->once()) ->method('getRequest') @@ -174,73 +153,53 @@ protected function setUp() } /** - * Test for execute method + * Test method execution _expireAjax (call hasItems === false) * * @return void - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ - public function testExecute() + protected function expireAjaxFlowHasItemsFalse() { - $data = [ - 'payment-key-1' => 'payment-value-1', - 'checks' => [ - \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL, - ] - ]; + $this->onepageMock->expects($this->atLeastOnce()) + ->method('getQuote') + ->willReturn($this->quoteMock); - $onepageMock = $this->getMock( - 'Magento\Checkout\Model\Type\Onepage', - [], - [], - '', - false - ); - $redirectMock = $this->getMock( - 'Magento\Framework\Controller\Result\Redirect', - [], - [], - '', - false - ); - $quoteMock = $this->getMock( - 'Magento\Quote\Model\Quote', - [], - [], - '', - false - ); - $agreementsValidatorMock = $this->getMock( - 'Magento\Checkout\Model\Agreements\AgreementsValidator', - [], - [], - '', - false - ); - $paymentMock = $this->getMock( - 'Magento\Quote\Model\Quote\Payment', - [], - [], - '', - false - ); - $checkoutMock = $this->getMock( - 'Magento\Checkout\Model\Session', - ['getRedirectUrl'], - [], - '', - false - ); - $resultJsonMock = $this->getMock( - 'Magento\Framework\Controller\Result\Json', - [], - [], - '', - false - ); + $this->quoteMock->expects($this->once()) + ->method('hasItems') + ->willReturn(false); + $this->quoteMock->expects($this->never()) + ->method('getHasError') + ->willReturn(true); + $this->quoteMock->expects($this->never()) + ->method('validateMinimumAmount') + ->willReturn(false); + + $this->requestMock->expects($this->never()) + ->method('getActionName'); + } + + /** + * Test for execute method + * + * @return void + */ + public function testExecuteWithSuccessOrderSave() + { + $testData = $this->getExecuteWithSuccessOrderSaveTestData(); + + + $redirectMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Redirect') + ->disableOriginalConstructor() + ->getMock(); + $paymentMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Payment') + ->disableOriginalConstructor() + ->getMock(); + $checkoutMock = $this->getMockBuilder('Magento\Checkout\Model\Session') + ->disableOriginalConstructor() + ->setMethods(['getRedirectUrl']) + ->getMock(); + $resultJsonMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Json') + ->disableOriginalConstructor() + ->getMock(); $redirectMock->expects($this->never()) ->method('setPath') @@ -258,70 +217,34 @@ public function testExecute() $this->objectManagerMock->expects($this->atLeastOnce()) ->method('get') - ->willReturnMap( - [ - ['Magento\Checkout\Model\Type\Onepage', $onepageMock], - ['Magento\Checkout\Model\Agreements\AgreementsValidator', $agreementsValidatorMock], - ] - ); + ->willReturnMap($testData['objectManager.get']); // call _expireAjax method - $onepageMock->expects($this->atLeastOnce()) - ->method('getQuote') - ->willReturn($quoteMock); - - $quoteMock->expects($this->once()) - ->method('hasItems') - ->willReturn(false); - $quoteMock->expects($this->never()) - ->method('getHasError') - ->willReturn(true); - $quoteMock->expects($this->never()) - ->method('validateMinimumAmount') - ->willReturn(false); - - $this->requestMock->expects($this->never()) - ->method('getActionName'); - // -- end + $this->expireAjaxFlowHasItemsFalse(); $this->requestMock->expects($this->atLeastOnce()) ->method('getPost') - ->willReturnMap( - [ - [ - 'agreement', - [], - [ - 'test-key-1' => 'test-value-1' - ] - ], - [ - 'payment', - [], - $data - ], - ] - ); + ->willReturnMap($testData['request.getPost']); - $agreementsValidatorMock->expects($this->once()) + $this->agreementsValidatorMock->expects($this->once()) ->method('isValid') - ->with(['test-key-1']) + ->with($testData['agreementsValidator.isValid']) ->willReturn(true); - $quoteMock->expects($this->atLeastOnce()) + $this->quoteMock->expects($this->atLeastOnce()) ->method('getPayment') ->willReturn($paymentMock); $paymentMock->expects($this->once()) ->method('setQuote') - ->with($quoteMock); + ->with($this->quoteMock); $paymentMock->expects($this->once()) ->method('importData') - ->with($data); + ->with($testData['payment.importData']); - $onepageMock->expects($this->once()) + $this->onepageMock->expects($this->once()) ->method('saveOrder'); - $onepageMock->expects($this->once()) + $this->onepageMock->expects($this->once()) ->method('getCheckout') ->willReturn($checkoutMock); @@ -342,9 +265,56 @@ public function testExecute() $resultJsonMock->expects($this->once()) ->method('setData') - ->with(['success' => 1, 'error' => false]) + ->with($testData['resultJson.setData']) ->willReturnSelf(); $this->assertEquals($resultJsonMock, $this->controller->execute()); } + + /** + * Get data for test testExecuteWithSuccessOrderSave + * + * @return array + */ + protected function getExecuteWithSuccessOrderSaveTestData() + { + $data = [ + 'payment-key-1' => 'payment-value-1', + 'checks' => [ + \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX, + \Magento\Payment\Model\Method\AbstractMethod::CHECK_ZERO_TOTAL, + ] + ]; + $testKey = 'test-key-1'; + + return [ + 'resultJson.setData' => [ + 'success' => 1, + 'error' => false + ], + 'request.getPost' => [ + [ + 'agreement', + [], + [ + $testKey => 'test-value-1' + ] + ], + [ + 'payment', + [], + $data + ], + ], + 'payment.importData' => $data, + 'agreementsValidator.isValid' => [$testKey], + 'objectManager.get' => [ + ['Magento\Checkout\Model\Type\Onepage', $this->onepageMock], + ['Magento\Checkout\Model\Agreements\AgreementsValidator', $this->agreementsValidatorMock], + ] + ]; + } } From 26c7b7a17ce54d26bc2603321bfd668b9cad22e5 Mon Sep 17 00:00:00 2001 From: "Gurzhyi, Andrii" Date: Wed, 22 Apr 2015 17:34:09 +0300 Subject: [PATCH 6/6] MAGETWO-36037: Adding a new event in the action OrderSave - fixed static test --- .../Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php index af7d1574487c4..cef6ff863cc8d 100644 --- a/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php +++ b/app/code/Magento/Checkout/Test/Unit/Controller/Onepage/SaveOrderTest.php @@ -10,6 +10,8 @@ /** * Class SaveOrderTest + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class SaveOrderTest extends \PHPUnit_Framework_TestCase {