From 0b38c851e0af7c9c237dcd7ed1fa44f872399803 Mon Sep 17 00:00:00 2001 From: Iryna Savchenko Date: Tue, 13 Jan 2015 17:12:09 +0200 Subject: [PATCH 01/17] MAGETWO-30795: Optimization of CollectTotalsFailedItems --- app/code/Magento/Checkout/Controller/Cart/Index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Checkout/Controller/Cart/Index.php b/app/code/Magento/Checkout/Controller/Cart/Index.php index 32d273a31fa94..fd43f5df96b99 100644 --- a/app/code/Magento/Checkout/Controller/Cart/Index.php +++ b/app/code/Magento/Checkout/Controller/Cart/Index.php @@ -14,6 +14,7 @@ class Index extends \Magento\Checkout\Controller\Cart */ public function execute() { + $this->_eventManager->dispatch('collect_totals_failed_items'); if ($this->cart->getQuote()->getItemsCount()) { $this->cart->init(); $this->cart->save(); From 2b8ab4657466bff4b6e83eb8ca4bbef45b37e53b Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Thu, 15 Jan 2015 18:17:37 +0200 Subject: [PATCH 02/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Model/SalesRule/CalculatorTest.php | 154 ++++++++++++++++-- 1 file changed, 141 insertions(+), 13 deletions(-) diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php index b70631f2e42b3..b8e7b26579248 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php @@ -5,35 +5,163 @@ */ namespace Magento\OfflineShipping\Model\SalesRule; +class CalculatorForTest extends Calculator +{ + public function setValidatorUtility($validatorUtility) + { + $this->validatorUtility = $validatorUtility; + } +} + class CalculatorTest extends \PHPUnit_Framework_TestCase { /** - * @var \Magento\SalesRule\Model\Validator|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\OfflineShipping\Model\SalesRule\CalculatorForTest|\PHPUnit_Framework_MockObject_MockObject */ protected $_model; + /** + * @var \Magento\Sales\Model\Quote\Item\AbstractItem|\PHPUnit_Framework_MockObject_MockObject + */ + protected $itemMock; + + /** + * @var \Magento\SalesRule\Model\Utility|\PHPUnit_Framework_MockObject_MockObject + */ + protected $utilityMock; + + /** + * @var \Magento\SalesRule\Model\Rule|\PHPUnit_Framework_MockObject_MockObject + */ + protected $ruleMock; + + /** + * @var \Magento\Sales\Model\Quote\Address|\PHPUnit_Framework_MockObject_MockObject + */ + protected $addressMock; + protected function setUp() { - $this->_model = $this->getMock( - 'Magento\OfflineShipping\Model\SalesRule\Calculator', - ['_getRules', '__wakeup'], - [], - '', - false - ); - $this->_model->expects($this->any())->method('_getRules')->will($this->returnValue([])); + $this->utilityMock = $this->getMockBuilder('Magento\SalesRule\Model\Utility') + ->disableOriginalConstructor() + ->setMethods(['canProcessRule']) + ->getMock(); + + $this->_model = $this->getMockBuilder('Magento\OfflineShipping\Model\SalesRule\CalculatorForTest') + ->disableOriginalConstructor() + ->setMethods(['_getRules', '__wakeup']) + ->getMock(); + + $this->ruleMock = $this->getMockBuilder('Magento\SalesRule\Model\Rule') + ->disableOriginalConstructor() + ->setMethods(['getActions', 'getSimpleFreeShipping']) + ->getMock(); + + $this->addressMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address') + ->disableOriginalConstructor() + ->setMethods(['setFreeShipping']) + ->getMock(); + + $this->_model->setValidatorUtility($this->utilityMock); + + $this->itemMock = $this->getMock('Magento\Sales\Model\Quote\Item', ['getAddress'], [], '', false); + + $this->itemMock->expects($this->once()) + ->method('getAddress') + ->willReturn($this->addressMock); } public function testProcessFreeShipping() { - $item = $this->getMock('Magento\Sales\Model\Quote\Item', ['getAddress', '__wakeup'], [], '', false); - $item->expects($this->once())->method('getAddress')->will($this->returnValue(true)); + $this->_model->expects($this->any())->method('_getRules')->will($this->returnValue([])); $this->assertInstanceOf( 'Magento\OfflineShipping\Model\SalesRule\Calculator', - $this->_model->processFreeShipping($item) + $this->_model->processFreeShipping($this->itemMock) ); + } + + public function testProcessFreeShippingContinueOnProcessRule() + { + $this->_model->expects($this->once()) + ->method('_getRules') + ->willReturn(['rule1']); + + $this->utilityMock->expects($this->once()) + ->method('canProcessRule') + ->willReturn(false); + + $this->_model->processFreeShipping($this->itemMock); + } + + public function testProcessFreeShippingContinueOnValidateItem() + { + $this->utilityMock->expects($this->once()) + ->method('canProcessRule') + ->willReturn(true); + + $actionsCollectionMock = $this->getMockBuilder('Magento\Rule\Model\Action\Collection') + ->disableOriginalConstructor() + ->setMethods(['validate']) + ->getMock(); + + $actionsCollectionMock->expects($this->once()) + ->method('validate') + ->willReturn(false); + + $this->ruleMock->expects($this->once()) + ->method('getActions') + ->willReturn($actionsCollectionMock); + + $this->_model->expects($this->once()) + ->method('_getRules') + ->willReturn([$this->ruleMock]); + + $this->_model->processFreeShipping($this->itemMock); + } - return true; + /** + * @dataProvider rulesDataProvider + */ + public function testProcessFreeShippingFreeShippingItem($rule) + { + $this->utilityMock->expects($this->once()) + ->method('canProcessRule') + ->willReturn(true); + + $actionsCollectionMock = $this->getMockBuilder('Magento\Rule\Model\Action\Collection') + ->disableOriginalConstructor() + ->setMethods(['validate']) + ->getMock(); + + $actionsCollectionMock->expects($this->once()) + ->method('validate') + ->willReturn(true); + + $this->ruleMock->expects($this->once()) + ->method('getActions') + ->willReturn($actionsCollectionMock); + + $this->_model->expects($this->once()) + ->method('_getRules') + ->willReturn([$this->ruleMock]); + + $this->ruleMock->expects($this->once()) + ->method('getSimpleFreeShipping') + ->willReturn($rule); + + $this->addressMock->expects( + $rule == \Magento\OfflineShipping\Model\SalesRule\Rule::FREE_SHIPPING_ADDRESS ? $this->once() : $this->never() + )->method('setFreeShipping'); + + $this->_model->processFreeShipping($this->itemMock); + } + + public function rulesDataProvider() + { + return [ + [\Magento\OfflineShipping\Model\SalesRule\Rule::FREE_SHIPPING_ITEM], + [\Magento\OfflineShipping\Model\SalesRule\Rule::FREE_SHIPPING_ADDRESS] + ]; } } From ad849eb9601229aeaab1a409ba0c03de8e9f254f Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Thu, 15 Jan 2015 20:01:31 +0200 Subject: [PATCH 03/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Model/Quote/FreeshippingTest.php | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php new file mode 100644 index 0000000000000..f422800d15994 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php @@ -0,0 +1,133 @@ +addressMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address') + ->disableOriginalConstructor() + ->setMethods([ + 'getQuote', + 'getAllItems', + 'getFreeShipping' + ]) + ->getMock(); + + $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface') + ->disableOriginalConstructor() + ->getMock(); + + $this->calculatorMock = $this->getMockBuilder('Magento\OfflineShipping\Model\SalesRule\Calculator') + ->disableOriginalConstructor() + //->setMethods(['init']) + ->getMock(); + + $this->model = $helper->getObject('Magento\OfflineShipping\Model\Quote\Freeshipping', [ + 'storeManager' => $this->storeManagerMock, + 'calculator' => $this->calculatorMock + ]); + } + + + public function testCollectWithEmptyAddressItems() + { + $quoteMock = $this->getMockBuilder('Magento\Sales\Model\Quote') + ->disableOriginalConstructor() + ->getMock(); + + $this->addressMock->expects($this->once()) + ->method('getQuote') + ->willReturn($quoteMock); + + $this->addressMock->expects($this->once()) + ->method('getAllItems') + ->willReturn([]); + + $this->assertSame($this->model->collect($this->addressMock), $this->model); + } + + /** + * @dataProvider scenariosDataProvider + */ + public function testCollectWithAddressItems( + $addressItemMockNoDiscountValue, + $addressMockGetFreeShippingExpects + ) { + $quoteMock = $this->getMockBuilder('Magento\Sales\Model\Quote') + ->disableOriginalConstructor() + ->getMock(); + + $this->addressMock->expects($this->any()) + ->method('getQuote') + ->willReturn($quoteMock); + + $addressItemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address\Item') + ->disableOriginalConstructor() + ->setMethods(['getNoDiscount', 'getFreeShipping']) + ->getMock(); + + $addressItemMock->expects($this->once()) + ->method('getNoDiscount') + ->willReturn($addressItemMockNoDiscountValue); + + $addressItemMock->expects($this->any()) + ->method('getFreeShipping') + ->willReturn(true); + + $this->addressMock->expects($addressMockGetFreeShippingExpects) + ->method('getFreeShipping') + ->willReturn(false); + + $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + ->disableOriginalConstructor() + ->getMock(); + + $this->storeManagerMock->expects($this->once()) + ->method('getStore') + ->willReturn($storeMock); + + $this->calculatorMock->expects($this->once()) + ->method('init'); + + $this->addressMock->expects($this->once()) + ->method('getAllItems') + ->willReturn([$addressItemMock]); + + $this->model->collect($this->addressMock); + } + + public function scenariosDataProvider() + { + return [ + [true, $this->never()], + [false, $this->once()] + ]; + } +} From 1de6a4227e5ddc8d248ef35e67978c7c595a7f40 Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Fri, 16 Jan 2015 14:30:42 +0200 Subject: [PATCH 04/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Model/Quote/FreeshippingTest.php | 95 ++++++++++++++----- 1 file changed, 70 insertions(+), 25 deletions(-) diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php index f422800d15994..2259ed7829d2d 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php @@ -36,7 +36,8 @@ protected function setUp() ->setMethods([ 'getQuote', 'getAllItems', - 'getFreeShipping' + 'getFreeShipping', + 'setFreeShipping' ]) ->getMock(); @@ -44,9 +45,17 @@ protected function setUp() ->disableOriginalConstructor() ->getMock(); + $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + ->disableOriginalConstructor() + ->getMock(); + + $this->storeManagerMock->expects($this->once()) + ->method('getStore') + ->willReturn($storeMock); + $this->calculatorMock = $this->getMockBuilder('Magento\OfflineShipping\Model\SalesRule\Calculator') ->disableOriginalConstructor() - //->setMethods(['init']) + ->setMethods(['init', 'processFreeShipping']) ->getMock(); $this->model = $helper->getObject('Magento\OfflineShipping\Model\Quote\Freeshipping', [ @@ -75,59 +84,95 @@ public function testCollectWithEmptyAddressItems() /** * @dataProvider scenariosDataProvider + * @param $isNoDiscount */ - public function testCollectWithAddressItems( - $addressItemMockNoDiscountValue, - $addressMockGetFreeShippingExpects - ) { + public function testCollectWithAddressItems($isNoDiscount) + { $quoteMock = $this->getMockBuilder('Magento\Sales\Model\Quote') ->disableOriginalConstructor() ->getMock(); - $this->addressMock->expects($this->any()) + $this->addressMock->expects($this->once()) ->method('getQuote') ->willReturn($quoteMock); $addressItemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address\Item') ->disableOriginalConstructor() - ->setMethods(['getNoDiscount', 'getFreeShipping']) + ->setMethods([ + 'getNoDiscount', + 'setFreeShipping', + 'getParentItemId', + 'getFreeShipping', + 'getHasChildren', + 'isChildrenCalculated', + 'getChildren' + ]) ->getMock(); + $this->addressMock->expects($this->once()) + ->method('getAllItems') + ->willReturn([$addressItemMock]); + + $this->calculatorMock->expects($this->once()) + ->method('init'); + $addressItemMock->expects($this->once()) ->method('getNoDiscount') - ->willReturn($addressItemMockNoDiscountValue); + ->willReturn($isNoDiscount); - $addressItemMock->expects($this->any()) + $addressItemMock->expects($isNoDiscount ? $this->once() : $this->never()) + ->method('setFreeShipping'); + + $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) + ->method('getParentItemId') + ->willReturn(false); + + $this->calculatorMock->expects($isNoDiscount ? $this->never() : $this->exactly(2)) + ->method('processFreeShipping'); + + $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) ->method('getFreeShipping') ->willReturn(true); - $this->addressMock->expects($addressMockGetFreeShippingExpects) - ->method('getFreeShipping') - ->willReturn(false); + $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) + ->method('getHasChildren') + ->willReturn(true); - $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) + ->method('isChildrenCalculated') + ->willReturn(true); + + $childMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item\AbstractItem') ->disableOriginalConstructor() + ->setMethods(['setFreeShipping', 'getQuote', 'getAddress', 'getOptionByCode']) ->getMock(); - $this->storeManagerMock->expects($this->once()) - ->method('getStore') - ->willReturn($storeMock); + $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) + ->method('getChildren') + ->willReturn([$childMock]); - $this->calculatorMock->expects($this->once()) - ->method('init'); + $childMock->expects($isNoDiscount ? $this->never() : $this->once()) + ->method('setFreeShipping'); - $this->addressMock->expects($this->once()) - ->method('getAllItems') - ->willReturn([$addressItemMock]); + $this->addressMock->expects($isNoDiscount ? $this->never() : $this->once()) + ->method('getFreeShipping') + ->willReturn(false); - $this->model->collect($this->addressMock); + $this->addressMock->expects($isNoDiscount ? $this->once() : $this->exactly(2)) + ->method('setFreeShipping'); + + $this->assertSame($this->model->collect($this->addressMock), $this->model); } public function scenariosDataProvider() { return [ - [true, $this->never()], - [false, $this->once()] + [ + true, // there is no a discount + ], + [ + false, // there is a discount + ] ]; } } From 73e34b8d3ce07123d4ffabfdbe5b254c38416159 Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Fri, 16 Jan 2015 16:01:22 +0200 Subject: [PATCH 05/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Checkout/Block/Cart/ShippingTest.php | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php new file mode 100644 index 0000000000000..21bdf26edeee2 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php @@ -0,0 +1,74 @@ +scopeConfigMock = $this->getMockBuilder('\Magento\Framework\App\Config\ScopeConfigInterface') + ->disableOriginalConstructor() + ->setMethods([ + 'getValue', + 'isSetFlag' + ]) + ->getMock(); + + $this->model = $helper->getObject('\Magento\OfflineShipping\Model\Plugin\Checkout\Block\Cart\Shipping', [ + 'scopeConfig' => $this->scopeConfigMock + ]); + } + + /** + * @dataProvider afterGetStateActiveDataProvider + */ + public function testAfterGetStateActive($scopeConfigMockReturnValue, $result, $assertResult) + { + /** @var \Magento\Checkout\Block\Cart\Shipping $subjectMock */ + $subjectMock = $this->getMockBuilder('Magento\Checkout\Block\Cart\Shipping') + ->disableOriginalConstructor() + ->getMock(); + + $this->scopeConfigMock->expects($result ? $this->never() : $this->once()) + ->method('getValue') + ->willReturn($scopeConfigMockReturnValue); + + $this->assertEquals($this->model->afterGetStateActive($subjectMock, $result), $assertResult); + } + + public function afterGetStateActiveDataProvider() + { + return [ + [ + true, + true, + true + ], + [ + true, + false, + true + ], + [ + false, + false, + false + ] + ]; + } +} From 1b9eb600a27f4f49c4f25982c0ef05516d7c7fe3 Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Fri, 16 Jan 2015 16:21:18 +0200 Subject: [PATCH 06/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Model/Config/Backend/TablerateTest.php | 50 +++++++++++++++++ .../Model/Config/Source/FlatrateTest.php | 30 +++++++++++ .../Observer/SalesRule/ActionsTabTest.php | 54 +++++++++++++++++++ .../Checkout/Block/Cart/ShippingTest.php | 2 +- 4 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/FlatrateTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php new file mode 100644 index 0000000000000..869c408052d13 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php @@ -0,0 +1,50 @@ +tableateFactoryMock = $this->getMockBuilder('Magento\OfflineShipping\Model\Resource\Carrier\TablerateFactory') + ->disableOriginalConstructor() + ->setMethods(['create']) + ->getMock(); + + $helper = new \Magento\TestFramework\Helper\ObjectManager($this); + $this->model = $helper->getObject('\Magento\OfflineShipping\Model\Config\Backend\Tablerate', [ + 'tablerateFactory' => $this->tableateFactoryMock + ]); + } + + public function testAfterSave() + { + $tablerateMock = $this->getMockBuilder('Magento\OfflineShipping\Model\Resource\Carrier\Tablerate') + ->disableOriginalConstructor() + ->setMethods(['uploadAndImport']) + ->getMock(); + + $this->tableateFactoryMock->expects($this->once()) + ->method('create') + ->willReturn($tablerateMock); + + $tablerateMock->expects($this->once()) + ->method('uploadAndImport') + ->with($this->model); + + $this->model->afterSave(); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/FlatrateTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/FlatrateTest.php new file mode 100644 index 0000000000000..c133cd1e07d79 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/FlatrateTest.php @@ -0,0 +1,30 @@ +model = new Flatrate(); + } + + public function testToOptionArray() + { + $expected = [ + ['value' => '', 'label' => __('None')], + ['value' => 'O', 'label' => __('Per Order')], + ['value' => 'I', 'label' => __('Per Item')] + ]; + + $this->assertEquals($expected, $this->model->toOptionArray()); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php new file mode 100644 index 0000000000000..f3ab5f5ca4f23 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php @@ -0,0 +1,54 @@ +model = new ActionsTab(); + } + + public function testPrepareForm() + { + $observerMock = $this->getMockBuilder('\Magento\Framework\Event\Observer') + ->disableOriginalConstructor() + ->setMethods(['getForm']) + ->getMock(); + + $formMock = $this->getMockBuilder('\Magento\Framework\Data\Form') + ->disableOriginalConstructor() + ->setMethods(['getElements']) + ->getMock(); + + $elementMock = $this->getMockBuilder('\Magento\Framework\Data\Form\Element\AbstractElement') + ->disableOriginalConstructor() + ->setMethods(['getId', 'addField']) + ->getMock(); + + $elementMock->expects($this->once()) + ->method('getId') + ->willReturn('action_fieldset'); + + $elementMock->expects($this->once()) + ->method('addField'); + + $formMock->expects($this->once()) + ->method('getElements') + ->willReturn([$elementMock]); + + $observerMock->expects($this->once()) + ->method('getForm') + ->willReturn($formMock); + + $this->model->prepareForm($observerMock); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php index 21bdf26edeee2..3e82bce92953d 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php @@ -3,7 +3,7 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ -namespace Magento\OfflineShipping\Model\SalesRule; +namespace Magento\OfflineShipping\Model\Plugin\Checkout\Block\Cart; class ShippingTest extends \PHPUnit_Framework_TestCase { From 14a47b68739e0292944ede8aff9ee14be29b8008 Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Fri, 16 Jan 2015 17:18:43 +0200 Subject: [PATCH 07/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Adminhtml/Carrier/Tablerate/GridTest.php | 80 +++++++++++++++++++ .../Model/Config/Source/TablerateTest.php | 47 +++++++++++ 2 files changed, 127 insertions(+) create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php new file mode 100644 index 0000000000000..4261fd9538085 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php @@ -0,0 +1,80 @@ +storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface') + ->disableOriginalConstructor() + ->getMock(); + + $context = $objectManager->getObject('Magento\Backend\Block\Template\Context', [ + 'storeManager' => $this->storeManagerMock + ]); + + $this->model = $objectManager->getObject('Magento\OfflineShipping\Block\Adminhtml\Carrier\Tablerate\Grid', [ + 'context' => $context, + ]); + } + + public function testSetWebsiteId() + { + $websiteMock = $this->getMockBuilder('Magento\Store\Model\Website') + ->disableOriginalConstructor() + ->getMock(); + + $this->storeManagerMock->expects($this->once()) + ->method('getWebsite') + ->willReturn($websiteMock); + + $this->model->setWebsiteId(1); + } + + public function testGetWebsiteId() + { + $websiteId = 10; + + $websiteMock = $this->getMockBuilder('Magento\Store\Model\Website') + ->disableOriginalConstructor() + ->setMethods(['getId']) + ->getMock(); + + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + + $this->storeManagerMock->expects($this->once()) + ->method('getWebsite') + ->willReturn($websiteMock); + + $this->assertEquals($websiteId, $this->model->getWebsiteId()); + } + + public function testSetConditionName() + { + $this->assertEquals($this->model, $this->model->setConditionName('someName')); + } + + public function testGetConditionName() + { + $conditionName = 'someName'; + $this->assertEquals($conditionName, $this->model->setConditionName($conditionName)->getConditionName()); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php new file mode 100644 index 0000000000000..8eea5073c3f3e --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php @@ -0,0 +1,47 @@ +carrierTablerateMock = $this->getMockBuilder('\Magento\OfflineShipping\Model\Carrier\Tablerate') + ->disableOriginalConstructor() + ->setMethods(['getCode']) + ->getMock(); + + $helper = new \Magento\TestFramework\Helper\ObjectManager($this); + $this->model = $helper->getObject('Magento\OfflineShipping\Model\Config\Source\Tablerate', [ + 'carrierTablerate' => $this->carrierTablerateMock + ]); + } + + public function testToOptionArray() + { + $codes = [1, 2, 3, 4, 5]; + $expected = []; + foreach ($codes as $k => $v) { + $expected[] = ['value' => $k, 'label' => $v]; + } + + $this->carrierTablerateMock->expects($this->once()) + ->method('getCode') + ->willReturn($codes); + + $this->assertEquals($expected, $this->model->toOptionArray()); + } +} From 6c311ce4406c8d1010694b85f7e8fabd96e8c71c Mon Sep 17 00:00:00 2001 From: Dmytro Kvashnin Date: Mon, 19 Jan 2015 13:59:47 +0200 Subject: [PATCH 08/17] MAGETWO-32782: [TD] Third party interfaces are not supported by single-tenant compiler - implemented check for external interfaces mention in preferences configuration - removed obsolete types from config --- app/code/Magento/Backend/etc/di.xml | 1 - app/code/Magento/Core/etc/di.xml | 2 - .../Tools/Di/Compiler/Config/ReaderTest.php | 239 +++++++++++++----- .../Tools/Di/Code/Reader/ClassesScanner.php | 2 +- .../Tools/Di/Compiler/Config/Reader.php | 24 +- .../Tools/Di/Definition/Collection.php | 8 +- .../ObjectManager/Config/Compiled.php | 10 + .../Framework/ObjectManager/Config/Config.php | 10 + .../ObjectManager/ConfigInterface.php | 7 + 9 files changed, 233 insertions(+), 70 deletions(-) diff --git a/app/code/Magento/Backend/etc/di.xml b/app/code/Magento/Backend/etc/di.xml index 2871ef2508f37..5445af580b20c 100644 --- a/app/code/Magento/Backend/etc/di.xml +++ b/app/code/Magento/Backend/etc/di.xml @@ -12,7 +12,6 @@ - diff --git a/app/code/Magento/Core/etc/di.xml b/app/code/Magento/Core/etc/di.xml index cc73a8a5b388c..3b6eb72b2b36b 100644 --- a/app/code/Magento/Core/etc/di.xml +++ b/app/code/Magento/Core/etc/di.xml @@ -14,14 +14,12 @@ - - diff --git a/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php index 7ccdb02d2065c..5bfc5e0cc7097 100644 --- a/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php +++ b/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php @@ -5,6 +5,9 @@ */ namespace Magento\Tools\Di\Compiler\Config; +use Magento\Framework\App\Area; +use Magento\Tools\Di\Definition\Collection; + class ReaderTest extends \PHPUnit_Framework_TestCase { /** @@ -54,6 +57,9 @@ protected function setUp() false ); $this->argumentsResolver = $this->getMock('Magento\Tools\Di\Compiler\ArgumentsResolver', [], [], '', false); + $this->argumentsResolverFactory->expects($this->any()) + ->method('create') + ->willReturn($this->argumentsResolver); $this->classReaderDecorator = $this->getMock( 'Magento\Tools\Di\Code\Reader\ClassReaderDecorator', [], @@ -72,71 +78,182 @@ protected function setUp() ); } - public function testGenerateCachePerScopeExtends() + public function testGenerateCachePerScopeGlobal() { - $definitionsCollection = $this->getMock('Magento\Tools\Di\Definition\Collection', [], [], '', false); - $this->diContainerConfig->expects($this->once()) - ->method('extend') - ->with([]); - $this->configLoader->expects($this->once()) - ->method('load') - ->with('areaCode') - ->willReturn([]); - - $this->argumentsResolverFactory->expects($this->once()) - ->method('create') - ->with($this->diContainerConfig) - ->willReturn($this->argumentsResolver); - $definitionsCollection->expects($this->exactly(2)) - ->method('getInstancesNamesList') - ->willReturn(['instanceType1'], ['instanceType2']); - $definitionsCollection->expects($this->once()) - ->method('getInstanceArguments') - ->willReturnMap([ - ['instanceType1', null], - ['instanceType2', ['arg1', 'arg2']], - ]); - $this->typeReader->expects($this->exactly(3)) - ->method('isConcrete') - ->willReturnMap([ - ['instanceType1', true], - ['instanceType2', false], - ['originalType1', true], - ['originalType2', false], - ]); - $this->argumentsResolver->expects($this->exactly(2)) - ->method('getResolvedConstructorArguments') - ->willReturnMap([ - ['instanceType1', 'resolvedConstructor1'], - ['instanceVirtualType1', 'resolvedConstructor2'], - ]); - $this->diContainerConfig->expects($this->exactly(2)) + $definitionCollection = $this->getDefinitionsCollection(); + $this->diContainerConfig->expects($this->any()) ->method('getVirtualTypes') - ->willReturn(['instanceVirtualType1' => 1, 'instanceVirtualType2' => 2]); - $this->diContainerConfig->expects($this->exactly(4)) + ->willReturn($this->getVirtualTypes()); + $this->diContainerConfig->expects($this->any()) + ->method('getPreferences') + ->willReturn($this->getPreferences()); + + $getResolvedConstructorArgumentsMap = $this->getResolvedVirtualConstructorArgumentsMap( + $definitionCollection, + $this->getVirtualTypes() + ); + + $this->diContainerConfig->expects($this->any()) ->method('getInstanceType') - ->willReturnMap([ - ['instanceVirtualType1', 'originalType1'], - ['instanceVirtualType2', 'originalType2'], - ]); - $definitionsCollection->expects($this->exactly(2)) - ->method('hasInstance') - ->willReturn(''); - $this->classReaderDecorator->expects($this->once()) - ->method('getConstructor') - ->willReturn('constructor'); - $this->diContainerConfig->expects($this->once()) + ->willReturnMap($this->getInstanceTypeMap($this->getVirtualTypes())); + + $this->diContainerConfig->expects($this->any()) ->method('isShared') - ->willReturnMap([ - ['instanceType1', true], - ['instanceType2', false], - ]); - $this->diContainerConfig->expects($this->once()) + ->willReturnMap($this->getExpectedNonShared()); + + $this->diContainerConfig->expects($this->any()) ->method('getPreference') - ->willReturnMap([ - ['instanceType1', 'instanceType1ss'], - ['instanceType2', 'instanceType2'], - ]); - $this->model->generateCachePerScope($definitionsCollection, 'areaCode'); + ->willReturnMap($this->getPreferencesMap()); + + $isConcreteMap = []; + foreach($definitionCollection->getInstancesNamesList() as $instanceType) { + $isConcreteMap[] = [$instanceType, strpos($instanceType, 'Interface') === false]; + + $getResolvedConstructorArgumentsMap[] = [ + $instanceType, + $definitionCollection->getInstanceArguments($instanceType), + $this->getResolvedArguments( + $definitionCollection->getInstanceArguments($instanceType) + ) + ]; + } + + $this->typeReader->expects($this->any()) + ->method('isConcrete') + ->willReturnMap($isConcreteMap); + $this->argumentsResolver->expects($this->any()) + ->method('getResolvedConstructorArguments') + ->willReturnMap($getResolvedConstructorArgumentsMap); + + $this->assertEquals( + $this->getExpectedGlobalConfig(), + $this->model->generateCachePerScope($definitionCollection, Area::AREA_GLOBAL) + ); + } + + /** + * @return array + */ + private function getExpectedGlobalConfig() + { + return [ + 'arguments' => [ + 'ConcreteType1' => serialize(['resolved_argument1', 'resolved_argument2']), + 'ConcreteType2' => serialize(['resolved_argument1', 'resolved_argument2']), + 'virtualType1' => serialize(['resolved_argument1', 'resolved_argument2']) + ], + 'nonShared' => [ + 'ConcreteType2' => true, + 'ThirdPartyInterface' => true + ], + 'preferences' => $this->getPreferences(), + 'instanceTypes' => $this->getVirtualTypes(), + ]; + } + + /** + * @return Collection + */ + private function getDefinitionsCollection() + { + $definitionCollection = new Collection(); + $definitionCollection->addDefinition('ConcreteType1', ['argument1', 'argument2']); + $definitionCollection->addDefinition('ConcreteType2', ['argument1', 'argument2']); + $definitionCollection->addDefinition('Interface1', [null]); + + return $definitionCollection; + } + + /** + * @return array + */ + private function getVirtualTypes() + { + return ['virtualType1' => 'ConcreteType1']; + } + + /** + * @return array + */ + private function getExpectedNonShared() + { + return [ + ['ConcreteType1', true], + ['ConcreteType2', false], + ['Interface1', true], + ['ThirdPartyInterface', false] + ]; + } + + /** + * @return array + */ + private function getPreferences() + { + return [ + 'Interface1' => 'ConcreteType1', + 'ThirdPartyInterface' => 'ConcreteType2' + ]; + } + + /** + * @return array + */ + private function getPreferencesMap() + { + return [ + ['ConcreteType1', 'ConcreteType1'], + ['ConcreteType2', 'ConcreteType2'], + ['Interface1', 'ConcreteType1'], + ['ThirdPartyInterface', 'ConcreteType2'] + ]; + } + + /** + * @param array $arguments + * @return array|null + */ + private function getResolvedArguments($arguments) + { + return empty($arguments) ? null : array_map( + function($argument) { + return 'resolved_' . $argument; + }, + $arguments + ); + } + + /** + * @param array $virtualTypes + * @return array + */ + private function getInstanceTypeMap($virtualTypes) + { + $getInstanceTypeMap = []; + foreach ($virtualTypes as $virtualType => $concreteType) { + $getInstanceTypeMap[] = [$virtualType, $concreteType]; + } + + return $getInstanceTypeMap; + } + + /** + * @param Collection $definitionCollection + * @param array $virtualTypes + * @return array + */ + private function getResolvedVirtualConstructorArgumentsMap(Collection $definitionCollection, array $virtualTypes) + { + $getResolvedConstructorArgumentsMap = []; + foreach ($virtualTypes as $virtualType => $concreteType) { + $getResolvedConstructorArgumentsMap[] = [ + $virtualType, + $definitionCollection->getInstanceArguments($concreteType), + $this->getResolvedArguments( + $definitionCollection->getInstanceArguments($concreteType) + ) + ]; + } + return $getResolvedConstructorArgumentsMap; } } diff --git a/dev/tools/Magento/Tools/Di/Code/Reader/ClassesScanner.php b/dev/tools/Magento/Tools/Di/Code/Reader/ClassesScanner.php index 42076377419a3..97063a236a2f9 100644 --- a/dev/tools/Magento/Tools/Di/Code/Reader/ClassesScanner.php +++ b/dev/tools/Magento/Tools/Di/Code/Reader/ClassesScanner.php @@ -41,7 +41,7 @@ public function getList($path) } $classes = []; $recursiveIterator = new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator($realPath), + new \RecursiveDirectoryIterator($realPath, \FilesystemIterator::FOLLOW_SYMLINKS), \RecursiveIteratorIterator::SELF_FIRST ); /** @var $fileItem \SplFileInfo */ diff --git a/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php b/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php index 8dca09ef4e27d..126d1eaf5541d 100644 --- a/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php +++ b/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php @@ -49,7 +49,7 @@ class Reader * @param Type $typeReader */ public function __construct( - \Magento\Framework\ObjectManager\ConfigInterface $diContainerConfig, + ConfigInterface $diContainerConfig, App\ObjectManager\ConfigLoader $configLoader, ArgumentsResolverFactory $argumentsResolverFactory, ClassReaderDecorator $classReaderDecorator, @@ -86,6 +86,8 @@ public function generateCachePerScope( $config['arguments'][$key] = serialize($value); } } + + $this->fillThirdPartyInterfaces($areaConfig, $definitionsCollection); foreach ($definitionsCollection->getInstancesNamesList() as $instanceName) { if (!$areaConfig->isShared($instanceName)) { $config['nonShared'][$instanceName] = true; @@ -95,6 +97,7 @@ public function generateCachePerScope( $config['preferences'][$instanceName] = $preference; } } + foreach (array_keys($areaConfig->getVirtualTypes()) as $virtualType) { $config['instanceTypes'][$virtualType] = $areaConfig->getInstanceType($virtualType); } @@ -140,4 +143,23 @@ private function getConfigForScope(DefinitionsCollection $definitionsCollection, } return $constructors; } + + /** + * Returns preferences for third party code + * + * @param ConfigInterface $config + * @param DefinitionsCollection $definitionsCollection + */ + private function fillThirdPartyInterfaces(ConfigInterface $config, DefinitionsCollection $definitionsCollection) + { + $definedInstances = $definitionsCollection->getInstancesNamesList(); + + foreach ($config->getPreferences() as $interface => $preference) { + if (in_array($interface, $definedInstances)) { + continue; + } + + $definitionsCollection->addDefinition($interface, []); + } + } } diff --git a/dev/tools/Magento/Tools/Di/Definition/Collection.php b/dev/tools/Magento/Tools/Di/Definition/Collection.php index 82638c7c5578d..2fbde66b29426 100644 --- a/dev/tools/Magento/Tools/Di/Definition/Collection.php +++ b/dev/tools/Magento/Tools/Di/Definition/Collection.php @@ -33,7 +33,7 @@ public function getCollection() * * @return void */ - public function initialize($definitions) + public function initialize(array $definitions) { $this->definitions = $definitions; } @@ -54,7 +54,7 @@ public function addCollection(Collection $collection) * Add new definition for instance * * @param string $instance - * @param array $arguments + * @param array|null $arguments * * @return void */ @@ -63,11 +63,11 @@ public function addDefinition($instance, $arguments = []) $this->definitions[$instance] = $arguments; } - /** + /**+ * Returns instance arguments * * @param string $instanceName - * @return null + * @return null|array */ public function getInstanceArguments($instanceName) { diff --git a/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php b/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php index 131e4bfcbaad6..a748488206643 100644 --- a/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php +++ b/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php @@ -145,4 +145,14 @@ public function getVirtualTypes() { return $this->virtualTypes; } + + /** + * Returns list on preferences + * + * @return array + */ + public function getPreferences() + { + return $this->preferences; + } } diff --git a/lib/internal/Magento/Framework/ObjectManager/Config/Config.php b/lib/internal/Magento/Framework/ObjectManager/Config/Config.php index 29c0432bdc56d..6f05e61be5351 100644 --- a/lib/internal/Magento/Framework/ObjectManager/Config/Config.php +++ b/lib/internal/Magento/Framework/ObjectManager/Config/Config.php @@ -313,4 +313,14 @@ public function getVirtualTypes() { return $this->_virtualTypes; } + + /** + * Returns list on preferences + * + * @return array + */ + public function getPreferences() + { + return $this->_preferences; + } } diff --git a/lib/internal/Magento/Framework/ObjectManager/ConfigInterface.php b/lib/internal/Magento/Framework/ObjectManager/ConfigInterface.php index 9e023fcc5e3e8..8f8f91297dc2a 100644 --- a/lib/internal/Magento/Framework/ObjectManager/ConfigInterface.php +++ b/lib/internal/Magento/Framework/ObjectManager/ConfigInterface.php @@ -72,4 +72,11 @@ public function getVirtualTypes(); * @return void */ public function extend(array $configuration); + + /** + * Returns list on preferences + * + * @return array + */ + public function getPreferences(); } From a59c1960866c5497db31b3e12247a682c0af042f Mon Sep 17 00:00:00 2001 From: Dmytro Kvashnin Date: Mon, 19 Jan 2015 16:32:26 +0200 Subject: [PATCH 09/17] MAGETWO-32782: [TD] Third party interfaces are not supported by single-tenant compiler - fixed fill of third party interfaces --- dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php b/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php index 126d1eaf5541d..79ce889e6ffcb 100644 --- a/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php +++ b/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php @@ -80,6 +80,8 @@ public function generateCachePerScope( } $config = []; + + $this->fillThirdPartyInterfaces($areaConfig, $definitionsCollection); $config['arguments'] = $this->getConfigForScope($definitionsCollection, $areaConfig); foreach ($config['arguments'] as $key => $value) { if ($value !== null) { @@ -87,7 +89,6 @@ public function generateCachePerScope( } } - $this->fillThirdPartyInterfaces($areaConfig, $definitionsCollection); foreach ($definitionsCollection->getInstancesNamesList() as $instanceName) { if (!$areaConfig->isShared($instanceName)) { $config['nonShared'][$instanceName] = true; From 567d9e16692aa2811f5740261995bf7d2f1b63dc Mon Sep 17 00:00:00 2001 From: Iryna Savchenko Date: Tue, 20 Jan 2015 12:53:32 +0200 Subject: [PATCH 10/17] MAGETWO-31363: [MPI] Unit and Integration tests coverage --- .../Block/Form/BanktransferTest.php | 37 ++++++++ .../Block/Form/Cashondelivery.php | 37 ++++++++ .../Block/Info/CheckmoTest.php | 91 +++++++++++++++++++ .../Model/BanktransferTest.php | 19 +++- .../Model/CashondeliveryTest.php | 19 +++- .../OfflinePayments/Model/CheckmoTest.php | 80 ++++++++++++++++ .../OfflinePayments/Model/ObserverTest.php | 59 ++++++++++++ .../Model/PurchaseorderTest.php | 52 +++++++++++ 8 files changed, 390 insertions(+), 4 deletions(-) create mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CheckmoTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Model/PurchaseorderTest.php diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php new file mode 100644 index 0000000000000..80eb7a7ac3ebf --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php @@ -0,0 +1,37 @@ +_object = $objectManagerHelper->getObject('Magento\OfflinePayments\Block\Form\Banktransfer'); + } + + public function testGetInstructions() + { + $method = $this->getMock( + 'Magento\Payment\Model\MethodInterface', + ['getInstructions', 'getCode', 'getFormBlockType', 'getTitle'], + [], + '', + false + ); + $method->expects($this->once()) + ->method('getInstructions') + ->willReturn('instructions'); + $this->_object->setData('method', $method); + + $this->assertEquals('instructions', $this->_object->getInstructions()); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php new file mode 100644 index 0000000000000..ba0a899bb48b4 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php @@ -0,0 +1,37 @@ +_object = $objectManagerHelper->getObject('Magento\OfflinePayments\Block\Form\Cashondelivery'); + } + + public function testGetInstructions() + { + $method = $this->getMock( + 'Magento\Payment\Model\MethodInterface', + ['getInstructions', 'getCode', 'getFormBlockType', 'getTitle'], + [], + '', + false + ); + $method->expects($this->once()) + ->method('getInstructions') + ->willReturn('instructions'); + $this->_object->setData('method', $method); + + $this->assertEquals('instructions', $this->_object->getInstructions()); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php new file mode 100644 index 0000000000000..88314b0b1af9a --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php @@ -0,0 +1,91 @@ +getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false); + $paymentDataMock = $this->getMock('Magento\Payment\Helper\Data', [], [], '', false); + $this->_scopeConfig = $this->getMock( + 'Magento\Framework\App\Config\ScopeConfigInterface', + ['getValue', 'isSetFlag'], + [], + '', + false + ); + $this->_object = $objectManagerHelper->getObject( + 'Magento\OfflinePayments\Block\Info\Checkmo', + [ + 'eventManager' => $eventManager, + 'paymentData' => $paymentDataMock, + 'scopeConfig' => $this->_scopeConfig, + ] + ); + } + + /** + * @dataProvider getPayableToDataProvider + */ + public function testGetPayableTo($details, $expected) + { + $info = $this->getMock('Magento\Payment\Model\Info', ['getAdditionalData'], [], '', false); + $info->expects($this->once()) + ->method('getAdditionalData') + ->willReturn(serialize($details)); + $this->_object->setData('info', $info); + + $this->assertEquals($expected, $this->_object->getPayableTo()); + } + + /** + * @return array + */ + public function getPayableToDataProvider() + { + return [ + [['payable_to' => 'payable'], 'payable'], + ['', ''] + ]; + } + + /** + * @dataProvider getMailingAddressDataProvider + */ + public function testGetMailingAddress($details, $expected) + { + $info = $this->getMock('Magento\Payment\Model\Info', ['getAdditionalData'], [], '', false); + $info->expects($this->once()) + ->method('getAdditionalData') + ->willReturn(serialize($details)); + $this->_object->setData('info', $info); + + $this->assertEquals($expected, $this->_object->getMailingAddress()); + } + + /** + * @return array + */ + public function getMailingAddressDataProvider() + { + return [ + [['mailing_address' => 'blah@blah.com'], 'blah@blah.com'], + ['', ''] + ]; + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php index 7dbc702c60f2c..a8705a4dc8f03 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php @@ -12,18 +12,23 @@ class BanktransferTest extends \PHPUnit_Framework_TestCase */ protected $_object; + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $_scopeConfig; + protected function setUp() { $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this); $eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false); $paymentDataMock = $this->getMock('Magento\Payment\Helper\Data', [], [], '', false); - $scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface'); + $this->_scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface', [], [], '', false); $this->_object = $objectManagerHelper->getObject( 'Magento\OfflinePayments\Model\Banktransfer', [ 'eventManager' => $eventManager, 'paymentData' => $paymentDataMock, - 'scopeConfig' => $scopeConfig, + 'scopeConfig' => $this->_scopeConfig, ] ); } @@ -32,4 +37,14 @@ public function testGetInfoBlockType() { $this->assertEquals('Magento\Payment\Block\Info\Instructions', $this->_object->getInfoBlockType()); } + + public function testGetInstructions() + { + $this->_object->setStore(1); + $this->_scopeConfig->expects($this->once()) + ->method('getValue') + ->with('payment/banktransfer/instructions', 'store', 1) + ->willReturn('payment configuration'); + $this->assertEquals('payment configuration', $this->_object->getInstructions()); + } } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php index e0f11d0283bfe..97bdf1127e547 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php @@ -12,6 +12,11 @@ class CashondeliveryTest extends \PHPUnit_Framework_TestCase */ protected $_object; + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $_scopeConfig; + protected function setUp() { $helper = new \Magento\TestFramework\Helper\ObjectManager($this); @@ -19,13 +24,13 @@ protected function setUp() $eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false); $paymentDataMock = $this->getMock('Magento\Payment\Helper\Data', [], [], '', false); - $scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface'); + $this->_scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface', [], [], '', false); $this->_object = $helper->getObject( 'Magento\OfflinePayments\Model\Cashondelivery', [ 'eventManager' => $eventManager, 'paymentData' => $paymentDataMock, - 'scopeConfig' => $scopeConfig, + 'scopeConfig' => $this->_scopeConfig, ] ); } @@ -34,4 +39,14 @@ public function testGetInfoBlockType() { $this->assertEquals('Magento\Payment\Block\Info\Instructions', $this->_object->getInfoBlockType()); } + + public function testGetInstructions() + { + $this->_object->setStore(1); + $this->_scopeConfig->expects($this->once()) + ->method('getValue') + ->with('payment/cashondelivery/instructions', 'store', 1) + ->willReturn('payment configuration'); + $this->assertEquals('payment configuration', $this->_object->getInstructions()); + } } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CheckmoTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CheckmoTest.php new file mode 100644 index 0000000000000..b6aee65b11e3e --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CheckmoTest.php @@ -0,0 +1,80 @@ +getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false); + $paymentDataMock = $this->getMock('Magento\Payment\Helper\Data', [], [], '', false); + $this->_scopeConfig = $this->getMock( + 'Magento\Framework\App\Config\ScopeConfigInterface', + ['getValue', 'isSetFlag'], + [], + '', + false + ); + $this->_object = $objectManagerHelper->getObject( + 'Magento\OfflinePayments\Model\Checkmo', + [ + 'eventManager' => $eventManager, + 'paymentData' => $paymentDataMock, + 'scopeConfig' => $this->_scopeConfig, + ] + ); + } + + public function testGetPayableTo() + { + $this->_object->setStore(1); + $this->_scopeConfig->expects($this->once()) + ->method('getValue') + ->with('payment/checkmo/payable_to', 'store', 1) + ->willReturn('payable'); + $this->assertEquals('payable', $this->_object->getPayableTo()); + } + + public function testGetMailingAddress() + { + $this->_object->setStore(1); + $this->_scopeConfig->expects($this->once()) + ->method('getValue') + ->with('payment/checkmo/mailing_address', 'store', 1) + ->willReturn('blah@blah.com'); + $this->assertEquals('blah@blah.com', $this->_object->getMailingAddress()); + } + + public function testAssignData() + { + $details['payable_to'] = 'payable'; + $details['mailing_address'] = 'blah@blah.com'; + $this->_object->setStore(1); + $this->_scopeConfig->expects($this->any()) + ->method('getValue') + ->willReturnMap([ + ['payment/checkmo/payable_to', 'store', 1, 'payable'], + ['payment/checkmo/mailing_address', 'store', 1, 'blah@blah.com'] + ]); + $instance = $this->getMock('Magento\Payment\Model\Info', ['setAdditionalData'], [], '', false); + $instance->expects($this->once()) + ->method('setAdditionalData') + ->with(serialize($details)); + $this->_object->setData('info_instance', $instance); + $this->_object->assignData(''); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php new file mode 100644 index 0000000000000..34f9c0da865f7 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php @@ -0,0 +1,59 @@ +_model = $objectManagerHelper->getObject('Magento\OfflinePayments\Model\Observer'); + } + + public function testBeforeOrderPaymentSave() + { + $observer = $this->getMock('Magento\Framework\Event\Observer', ['getEvent'], [], '', false); + $event = $this->getMock('Magento\Framework\Event', ['getPayment'], [], '', false); + $payment = $this->getMock( + 'Magento\Sales\Model\Order\Payment', + ['getMethod', 'setAdditionalInformation', 'getMethodInstance'], + [], + '', + false + ); + $payment->expects($this->once()) + ->method('getMethod') + ->willReturn('banktransfer'); + $payment->expects($this->once()) + ->method('setAdditionalInformation') + ->with('instructions', 'payment configuration'); + $method = $this->getMock( + 'Magento\Payment\Model\MethodInterface', + ['getInstructions', 'getFormBlockType', 'getTitle', 'getCode'], + [], + '', + false + ); + $method->expects($this->once()) + ->method('getInstructions') + ->willReturn('payment configuration'); + $payment->expects($this->once()) + ->method('getMethodInstance') + ->willReturn($method); + $event->expects($this->once()) + ->method('getPayment') + ->willReturn($payment); + $observer->expects($this->once()) + ->method('getEvent') + ->willReturn($event); + $this->_model->beforeOrderPaymentSave($observer); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/PurchaseorderTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/PurchaseorderTest.php new file mode 100644 index 0000000000000..fb08707e9e4b9 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/PurchaseorderTest.php @@ -0,0 +1,52 @@ +getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false); + $paymentDataMock = $this->getMock('Magento\Payment\Helper\Data', [], [], '', false); + $this->_scopeConfig = $this->getMock( + 'Magento\Framework\App\Config\ScopeConfigInterface', + ['getValue', 'isSetFlag'], + [], + '', + false + ); + $this->_object = $objectManagerHelper->getObject( + 'Magento\OfflinePayments\Model\Purchaseorder', + [ + 'eventManager' => $eventManager, + 'paymentData' => $paymentDataMock, + 'scopeConfig' => $this->_scopeConfig, + ] + ); + } + + public function testAssignData() + { + $data = new \Magento\Framework\Object([ + 'po_number' => '12345' + ]); + + $instance = $this->getMock('Magento\Payment\Model\Info', [], [], '', false); + $this->_object->setData('info_instance', $instance); + $this->_object->assignData($data); + } +} From 7d7d9e32cbfa88e7f6085f9cb646bd84dada3d3c Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Fri, 16 Jan 2015 17:18:43 +0200 Subject: [PATCH 11/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Model/Config/Backend/Tablerate.php | 4 +- .../Model/Observer/SalesRule/ActionsTab.php | 32 ++--- .../Adminhtml/Carrier/Tablerate/GridTest.php | 126 ++++++++++++++++++ .../Model/Config/Source/TablerateTest.php | 47 +++++++ .../Observer/SalesRule/ActionsTabTest.php | 18 ++- .../Checkout/Block/Cart/ShippingTest.php | 2 +- 6 files changed, 211 insertions(+), 18 deletions(-) create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php create mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php diff --git a/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php b/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php index 6056d7dbbb792..c0b311a1073ad 100644 --- a/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php +++ b/app/code/Magento/OfflineShipping/Model/Config/Backend/Tablerate.php @@ -46,6 +46,8 @@ public function __construct( */ public function afterSave() { - $this->_tablerateFactory->create()->uploadAndImport($this); + /** @var \Magento\OfflineShipping\Model\Resource\Carrier\Tablerate $tableRate */ + $tableRate = $this->_tablerateFactory->create(); + $tableRate->uploadAndImport($this); } } diff --git a/app/code/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTab.php b/app/code/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTab.php index b1e56563d7477..10068f3d7e548 100644 --- a/app/code/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTab.php +++ b/app/code/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTab.php @@ -24,22 +24,24 @@ public function prepareForm($observer) $form = $observer->getForm(); foreach ($form->getElements() as $element) { /** @var \Magento\Framework\Data\Form\Element\AbstractElement $element */ - if ($element->getId() == 'action_fieldset') { - $element->addField( - 'simple_free_shipping', - 'select', - [ - 'label' => __('Free Shipping'), - 'title' => __('Free Shipping'), - 'name' => 'simple_free_shipping', - 'options' => [ - 0 => __('No'), - Rule::FREE_SHIPPING_ITEM => __('For matching items only'), - Rule::FREE_SHIPPING_ADDRESS => __('For shipment with matching items'), - ] - ] - ); + if ($element->getId() != 'action_fieldset') { + continue; } + + $element->addField( + 'simple_free_shipping', + 'select', + [ + 'label' => __('Free Shipping'), + 'title' => __('Free Shipping'), + 'name' => 'simple_free_shipping', + 'options' => [ + 0 => __('No'), + Rule::FREE_SHIPPING_ITEM => __('For matching items only'), + Rule::FREE_SHIPPING_ADDRESS => __('For shipment with matching items'), + ] + ] + ); } } } diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php new file mode 100644 index 0000000000000..f569f9515ddf4 --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php @@ -0,0 +1,126 @@ +storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface') + ->disableOriginalConstructor() + ->getMock(); + + $this->context = $objectManager->getObject('Magento\Backend\Block\Template\Context', [ + 'storeManager' => $this->storeManagerMock + ]); + + $this->backendHelperMock = $this->getMockBuilder('\Magento\Backend\Helper\Data') + ->disableOriginalConstructor() + ->getMock(); + + $this->collectionFactoryMock = $this->getMockBuilder('\Magento\OfflineShipping\Model\Resource\Carrier\Tablerate\CollectionFactory') + ->disableOriginalConstructor() + ->getMock(); + + $this->tablerateMock = $this->getMockBuilder('Magento\OfflineShipping\Model\Carrier\Tablerate') + ->disableOriginalConstructor() + ->getMock(); + + $this->model = new \Magento\OfflineShipping\Block\Adminhtml\Carrier\Tablerate\Grid( + $this->context, + $this->backendHelperMock, + $this->collectionFactoryMock, + $this->tablerateMock + ); + } + + public function testSetWebsiteId() + { + $websiteId = 1; + + $websiteMock = $this->getMockBuilder('Magento\Store\Model\Website') + ->setMethods(['getId']) + ->disableOriginalConstructor() + ->getMock(); + + $this->storeManagerMock->expects($this->once()) + ->method('getWebsite') + ->with($websiteId) + ->willReturn($websiteMock); + + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + + $this->assertSame($this->model, $this->model->setWebsiteId($websiteId)); + $this->assertEquals($websiteId, $this->model->getWebsiteId()); + } + + public function testGetWebsiteId() + { + $websiteId = 10; + + $websiteMock = $this->getMockBuilder('Magento\Store\Model\Website') + ->disableOriginalConstructor() + ->setMethods(['getId']) + ->getMock(); + + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + + $this->storeManagerMock->expects($this->once()) + ->method('getWebsite') + ->willReturn($websiteMock); + + $this->assertEquals($websiteId, $this->model->getWebsiteId()); + + $this->storeManagerMock->expects($this->never()) + ->method('getWebsite') + ->willReturn($websiteMock); + + $this->assertEquals($websiteId, $this->model->getWebsiteId()); + } + + public function testSetAndGetConditionName() + { + $conditionName = 'someName'; + $this->assertEquals($this->model, $this->model->setConditionName($conditionName)); + $this->assertEquals($conditionName, $this->model->getConditionName()); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php new file mode 100644 index 0000000000000..8eea5073c3f3e --- /dev/null +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Source/TablerateTest.php @@ -0,0 +1,47 @@ +carrierTablerateMock = $this->getMockBuilder('\Magento\OfflineShipping\Model\Carrier\Tablerate') + ->disableOriginalConstructor() + ->setMethods(['getCode']) + ->getMock(); + + $helper = new \Magento\TestFramework\Helper\ObjectManager($this); + $this->model = $helper->getObject('Magento\OfflineShipping\Model\Config\Source\Tablerate', [ + 'carrierTablerate' => $this->carrierTablerateMock + ]); + } + + public function testToOptionArray() + { + $codes = [1, 2, 3, 4, 5]; + $expected = []; + foreach ($codes as $k => $v) { + $expected[] = ['value' => $k, 'label' => $v]; + } + + $this->carrierTablerateMock->expects($this->once()) + ->method('getCode') + ->willReturn($codes); + + $this->assertEquals($expected, $this->model->toOptionArray()); + } +} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php index f3ab5f5ca4f23..751faf0cf82c8 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Observer/SalesRule/ActionsTabTest.php @@ -5,6 +5,8 @@ */ namespace Magento\OfflineShipping\Model\Observer\SalesRule; +use Magento\OfflineShipping\Model\SalesRule\Rule; + class ActionsTabTest extends \PHPUnit_Framework_TestCase { /** @@ -39,7 +41,21 @@ public function testPrepareForm() ->willReturn('action_fieldset'); $elementMock->expects($this->once()) - ->method('addField'); + ->method('addField') + ->with( + 'simple_free_shipping', + 'select', + [ + 'label' => __('Free Shipping'), + 'title' => __('Free Shipping'), + 'name' => 'simple_free_shipping', + 'options' => [ + 0 => __('No'), + Rule::FREE_SHIPPING_ITEM => __('For matching items only'), + Rule::FREE_SHIPPING_ADDRESS => __('For shipment with matching items'), + ] + ] + ); $formMock->expects($this->once()) ->method('getElements') diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php index 3e82bce92953d..0fc0f97fbb760 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Plugin/Checkout/Block/Cart/ShippingTest.php @@ -48,7 +48,7 @@ public function testAfterGetStateActive($scopeConfigMockReturnValue, $result, $a ->method('getValue') ->willReturn($scopeConfigMockReturnValue); - $this->assertEquals($this->model->afterGetStateActive($subjectMock, $result), $assertResult); + $this->assertEquals($assertResult, $this->model->afterGetStateActive($subjectMock, $result)); } public function afterGetStateActiveDataProvider() From 619125f1383f4d3da0c9f6921b9b8746ef8551e6 Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Tue, 20 Jan 2015 13:54:09 +0200 Subject: [PATCH 12/17] MAGETWO-31363: Unit and Integration tests coverage --- .../Model/Quote/FreeshippingTest.php | 178 ------------------ .../Model/SalesRule/CalculatorTest.php | 154 ++------------- 2 files changed, 13 insertions(+), 319 deletions(-) delete mode 100644 dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php deleted file mode 100644 index 2259ed7829d2d..0000000000000 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Quote/FreeshippingTest.php +++ /dev/null @@ -1,178 +0,0 @@ -addressMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address') - ->disableOriginalConstructor() - ->setMethods([ - 'getQuote', - 'getAllItems', - 'getFreeShipping', - 'setFreeShipping' - ]) - ->getMock(); - - $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface') - ->disableOriginalConstructor() - ->getMock(); - - $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') - ->disableOriginalConstructor() - ->getMock(); - - $this->storeManagerMock->expects($this->once()) - ->method('getStore') - ->willReturn($storeMock); - - $this->calculatorMock = $this->getMockBuilder('Magento\OfflineShipping\Model\SalesRule\Calculator') - ->disableOriginalConstructor() - ->setMethods(['init', 'processFreeShipping']) - ->getMock(); - - $this->model = $helper->getObject('Magento\OfflineShipping\Model\Quote\Freeshipping', [ - 'storeManager' => $this->storeManagerMock, - 'calculator' => $this->calculatorMock - ]); - } - - - public function testCollectWithEmptyAddressItems() - { - $quoteMock = $this->getMockBuilder('Magento\Sales\Model\Quote') - ->disableOriginalConstructor() - ->getMock(); - - $this->addressMock->expects($this->once()) - ->method('getQuote') - ->willReturn($quoteMock); - - $this->addressMock->expects($this->once()) - ->method('getAllItems') - ->willReturn([]); - - $this->assertSame($this->model->collect($this->addressMock), $this->model); - } - - /** - * @dataProvider scenariosDataProvider - * @param $isNoDiscount - */ - public function testCollectWithAddressItems($isNoDiscount) - { - $quoteMock = $this->getMockBuilder('Magento\Sales\Model\Quote') - ->disableOriginalConstructor() - ->getMock(); - - $this->addressMock->expects($this->once()) - ->method('getQuote') - ->willReturn($quoteMock); - - $addressItemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address\Item') - ->disableOriginalConstructor() - ->setMethods([ - 'getNoDiscount', - 'setFreeShipping', - 'getParentItemId', - 'getFreeShipping', - 'getHasChildren', - 'isChildrenCalculated', - 'getChildren' - ]) - ->getMock(); - - $this->addressMock->expects($this->once()) - ->method('getAllItems') - ->willReturn([$addressItemMock]); - - $this->calculatorMock->expects($this->once()) - ->method('init'); - - $addressItemMock->expects($this->once()) - ->method('getNoDiscount') - ->willReturn($isNoDiscount); - - $addressItemMock->expects($isNoDiscount ? $this->once() : $this->never()) - ->method('setFreeShipping'); - - $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('getParentItemId') - ->willReturn(false); - - $this->calculatorMock->expects($isNoDiscount ? $this->never() : $this->exactly(2)) - ->method('processFreeShipping'); - - $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('getFreeShipping') - ->willReturn(true); - - $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('getHasChildren') - ->willReturn(true); - - $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('isChildrenCalculated') - ->willReturn(true); - - $childMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item\AbstractItem') - ->disableOriginalConstructor() - ->setMethods(['setFreeShipping', 'getQuote', 'getAddress', 'getOptionByCode']) - ->getMock(); - - $addressItemMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('getChildren') - ->willReturn([$childMock]); - - $childMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('setFreeShipping'); - - $this->addressMock->expects($isNoDiscount ? $this->never() : $this->once()) - ->method('getFreeShipping') - ->willReturn(false); - - $this->addressMock->expects($isNoDiscount ? $this->once() : $this->exactly(2)) - ->method('setFreeShipping'); - - $this->assertSame($this->model->collect($this->addressMock), $this->model); - } - - public function scenariosDataProvider() - { - return [ - [ - true, // there is no a discount - ], - [ - false, // there is a discount - ] - ]; - } -} diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php index b8e7b26579248..b70631f2e42b3 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/SalesRule/CalculatorTest.php @@ -5,163 +5,35 @@ */ namespace Magento\OfflineShipping\Model\SalesRule; -class CalculatorForTest extends Calculator -{ - public function setValidatorUtility($validatorUtility) - { - $this->validatorUtility = $validatorUtility; - } -} - class CalculatorTest extends \PHPUnit_Framework_TestCase { /** - * @var \Magento\OfflineShipping\Model\SalesRule\CalculatorForTest|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\SalesRule\Model\Validator|\PHPUnit_Framework_MockObject_MockObject */ protected $_model; - /** - * @var \Magento\Sales\Model\Quote\Item\AbstractItem|\PHPUnit_Framework_MockObject_MockObject - */ - protected $itemMock; - - /** - * @var \Magento\SalesRule\Model\Utility|\PHPUnit_Framework_MockObject_MockObject - */ - protected $utilityMock; - - /** - * @var \Magento\SalesRule\Model\Rule|\PHPUnit_Framework_MockObject_MockObject - */ - protected $ruleMock; - - /** - * @var \Magento\Sales\Model\Quote\Address|\PHPUnit_Framework_MockObject_MockObject - */ - protected $addressMock; - protected function setUp() { - $this->utilityMock = $this->getMockBuilder('Magento\SalesRule\Model\Utility') - ->disableOriginalConstructor() - ->setMethods(['canProcessRule']) - ->getMock(); - - $this->_model = $this->getMockBuilder('Magento\OfflineShipping\Model\SalesRule\CalculatorForTest') - ->disableOriginalConstructor() - ->setMethods(['_getRules', '__wakeup']) - ->getMock(); - - $this->ruleMock = $this->getMockBuilder('Magento\SalesRule\Model\Rule') - ->disableOriginalConstructor() - ->setMethods(['getActions', 'getSimpleFreeShipping']) - ->getMock(); - - $this->addressMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Address') - ->disableOriginalConstructor() - ->setMethods(['setFreeShipping']) - ->getMock(); - - $this->_model->setValidatorUtility($this->utilityMock); - - $this->itemMock = $this->getMock('Magento\Sales\Model\Quote\Item', ['getAddress'], [], '', false); - - $this->itemMock->expects($this->once()) - ->method('getAddress') - ->willReturn($this->addressMock); + $this->_model = $this->getMock( + 'Magento\OfflineShipping\Model\SalesRule\Calculator', + ['_getRules', '__wakeup'], + [], + '', + false + ); + $this->_model->expects($this->any())->method('_getRules')->will($this->returnValue([])); } public function testProcessFreeShipping() { - $this->_model->expects($this->any())->method('_getRules')->will($this->returnValue([])); + $item = $this->getMock('Magento\Sales\Model\Quote\Item', ['getAddress', '__wakeup'], [], '', false); + $item->expects($this->once())->method('getAddress')->will($this->returnValue(true)); $this->assertInstanceOf( 'Magento\OfflineShipping\Model\SalesRule\Calculator', - $this->_model->processFreeShipping($this->itemMock) + $this->_model->processFreeShipping($item) ); - } - - public function testProcessFreeShippingContinueOnProcessRule() - { - $this->_model->expects($this->once()) - ->method('_getRules') - ->willReturn(['rule1']); - - $this->utilityMock->expects($this->once()) - ->method('canProcessRule') - ->willReturn(false); - - $this->_model->processFreeShipping($this->itemMock); - } - - public function testProcessFreeShippingContinueOnValidateItem() - { - $this->utilityMock->expects($this->once()) - ->method('canProcessRule') - ->willReturn(true); - - $actionsCollectionMock = $this->getMockBuilder('Magento\Rule\Model\Action\Collection') - ->disableOriginalConstructor() - ->setMethods(['validate']) - ->getMock(); - - $actionsCollectionMock->expects($this->once()) - ->method('validate') - ->willReturn(false); - - $this->ruleMock->expects($this->once()) - ->method('getActions') - ->willReturn($actionsCollectionMock); - - $this->_model->expects($this->once()) - ->method('_getRules') - ->willReturn([$this->ruleMock]); - - $this->_model->processFreeShipping($this->itemMock); - } - /** - * @dataProvider rulesDataProvider - */ - public function testProcessFreeShippingFreeShippingItem($rule) - { - $this->utilityMock->expects($this->once()) - ->method('canProcessRule') - ->willReturn(true); - - $actionsCollectionMock = $this->getMockBuilder('Magento\Rule\Model\Action\Collection') - ->disableOriginalConstructor() - ->setMethods(['validate']) - ->getMock(); - - $actionsCollectionMock->expects($this->once()) - ->method('validate') - ->willReturn(true); - - $this->ruleMock->expects($this->once()) - ->method('getActions') - ->willReturn($actionsCollectionMock); - - $this->_model->expects($this->once()) - ->method('_getRules') - ->willReturn([$this->ruleMock]); - - $this->ruleMock->expects($this->once()) - ->method('getSimpleFreeShipping') - ->willReturn($rule); - - $this->addressMock->expects( - $rule == \Magento\OfflineShipping\Model\SalesRule\Rule::FREE_SHIPPING_ADDRESS ? $this->once() : $this->never() - )->method('setFreeShipping'); - - $this->_model->processFreeShipping($this->itemMock); - } - - public function rulesDataProvider() - { - return [ - [\Magento\OfflineShipping\Model\SalesRule\Rule::FREE_SHIPPING_ITEM], - [\Magento\OfflineShipping\Model\SalesRule\Rule::FREE_SHIPPING_ADDRESS] - ]; + return true; } } From 45549012036e7dde1b7e7ea5852236cf55f8ec4e Mon Sep 17 00:00:00 2001 From: Iryna Savchenko Date: Tue, 20 Jan 2015 17:31:38 +0200 Subject: [PATCH 13/17] MAGETWO-31363: [MPI] Unit and Integration tests coverage --- .../Block/Form/AbstractInstruction.php | 32 +++++++++++ .../Block/Form/Banktransfer.php | 22 +------ .../Block/Form/Cashondelivery.php | 22 +------ .../OfflinePayments/Model/Banktransfer.php | 10 ---- .../OfflinePayments/Model/Observer.php | 10 +++- .../Payment/Block/Info/Instructions.php | 2 +- ...erTest.php => AbstractInstructionTest.php} | 17 +++--- .../Block/Form/Cashondelivery.php | 37 ------------ .../Block/Info/CheckmoTest.php | 50 +++++++--------- .../Model/BanktransferTest.php | 10 ---- .../Model/CashondeliveryTest.php | 10 ---- .../OfflinePayments/Model/ObserverTest.php | 29 +++++++++- .../Payment/Block/Info/InstructionsTest.php | 57 +++++++++++-------- 13 files changed, 135 insertions(+), 173 deletions(-) create mode 100644 app/code/Magento/OfflinePayments/Block/Form/AbstractInstruction.php rename dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/{BanktransferTest.php => AbstractInstructionTest.php} (52%) delete mode 100644 dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php diff --git a/app/code/Magento/OfflinePayments/Block/Form/AbstractInstruction.php b/app/code/Magento/OfflinePayments/Block/Form/AbstractInstruction.php new file mode 100644 index 0000000000000..4ad7357cfdad9 --- /dev/null +++ b/app/code/Magento/OfflinePayments/Block/Form/AbstractInstruction.php @@ -0,0 +1,32 @@ +_instructions)) { + $this->_instructions = $this->getMethod()->getInstructions(); + } + return $this->_instructions; + } +} diff --git a/app/code/Magento/OfflinePayments/Block/Form/Banktransfer.php b/app/code/Magento/OfflinePayments/Block/Form/Banktransfer.php index 1693929cdaabd..d71654418a38f 100644 --- a/app/code/Magento/OfflinePayments/Block/Form/Banktransfer.php +++ b/app/code/Magento/OfflinePayments/Block/Form/Banktransfer.php @@ -8,32 +8,12 @@ /** * Block for Bank Transfer payment method form */ -class Banktransfer extends \Magento\Payment\Block\Form +class Banktransfer extends \Magento\OfflinePayments\Block\Form\AbstractInstruction { - /** - * Instructions text - * - * @var string - */ - protected $_instructions; - /** * Bank transfer template * * @var string */ protected $_template = 'form/banktransfer.phtml'; - - /** - * Get instructions text from config - * - * @return string - */ - public function getInstructions() - { - if (is_null($this->_instructions)) { - $this->_instructions = $this->getMethod()->getInstructions(); - } - return $this->_instructions; - } } diff --git a/app/code/Magento/OfflinePayments/Block/Form/Cashondelivery.php b/app/code/Magento/OfflinePayments/Block/Form/Cashondelivery.php index af0850e5860b8..1e14cabb9ba2b 100644 --- a/app/code/Magento/OfflinePayments/Block/Form/Cashondelivery.php +++ b/app/code/Magento/OfflinePayments/Block/Form/Cashondelivery.php @@ -8,32 +8,12 @@ /** * Block for Cash On Delivery payment method form */ -class Cashondelivery extends \Magento\Payment\Block\Form +class Cashondelivery extends \Magento\OfflinePayments\Block\Form\AbstractInstruction { - /** - * Instructions text - * - * @var string - */ - protected $_instructions; - /** * Cash on delivery template * * @var string */ protected $_template = 'form/cashondelivery.phtml'; - - /** - * Get instructions text from config - * - * @return string - */ - public function getInstructions() - { - if (is_null($this->_instructions)) { - $this->_instructions = $this->getMethod()->getInstructions(); - } - return $this->_instructions; - } } diff --git a/app/code/Magento/OfflinePayments/Model/Banktransfer.php b/app/code/Magento/OfflinePayments/Model/Banktransfer.php index 044dd3301ba60..4cc48a5752720 100644 --- a/app/code/Magento/OfflinePayments/Model/Banktransfer.php +++ b/app/code/Magento/OfflinePayments/Model/Banktransfer.php @@ -39,14 +39,4 @@ class Banktransfer extends \Magento\Payment\Model\Method\AbstractMethod * @var bool */ protected $_isOffline = true; - - /** - * Get instructions text from config - * - * @return string - */ - public function getInstructions() - { - return trim($this->getConfigData('instructions')); - } } diff --git a/app/code/Magento/OfflinePayments/Model/Observer.php b/app/code/Magento/OfflinePayments/Model/Observer.php index 61fc00d538940..bafe632349cfe 100644 --- a/app/code/Magento/OfflinePayments/Model/Observer.php +++ b/app/code/Magento/OfflinePayments/Model/Observer.php @@ -21,9 +21,13 @@ public function beforeOrderPaymentSave(\Magento\Framework\Event\Observer $observ { /** @var \Magento\Sales\Model\Order\Payment $payment */ $payment = $observer->getEvent()->getPayment(); - $banktransfer = \Magento\OfflinePayments\Model\Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE; - if ($payment->getMethod() === $banktransfer) { - $payment->setAdditionalInformation('instructions', $payment->getMethodInstance()->getInstructions()); + if ($payment->getMethod() === + \Magento\OfflinePayments\Model\Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE + ) { + $payment->setAdditionalInformation( + 'instructions', + $payment->getMethodInstance()->getConfigData('instructions') + ); } } } diff --git a/app/code/Magento/Payment/Block/Info/Instructions.php b/app/code/Magento/Payment/Block/Info/Instructions.php index 2caeeb5f2f9e6..55ffee89fa136 100644 --- a/app/code/Magento/Payment/Block/Info/Instructions.php +++ b/app/code/Magento/Payment/Block/Info/Instructions.php @@ -33,7 +33,7 @@ public function getInstructions() if (is_null($this->_instructions)) { $this->_instructions = $this->getInfo()->getAdditionalInformation( 'instructions' - ) ?: $this->getMethod()->getInstructions(); + ) ?: $this->getMethod()->getConfigData('instructions'); } return $this->_instructions; } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/AbstractInstructionTest.php similarity index 52% rename from dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php rename to dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/AbstractInstructionTest.php index 80eb7a7ac3ebf..a6ef83d4f0e11 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/BanktransferTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/AbstractInstructionTest.php @@ -5,17 +5,20 @@ */ namespace Magento\OfflinePayments\Block\Form; -class BanktransferTest extends \PHPUnit_Framework_TestCase +class AbstractInstructionTest extends \PHPUnit_Framework_TestCase { /** - * @var \Magento\OfflinePayments\Block\Form\Banktransfer + * @var \Magento\OfflinePayments\Block\Form\AbstractInstruction */ - protected $_object; + protected $_model; protected function setUp() { - $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this); - $this->_object = $objectManagerHelper->getObject('Magento\OfflinePayments\Block\Form\Banktransfer'); + $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false); + $this->_model = $this->getMockForAbstractClass( + 'Magento\OfflinePayments\Block\Form\AbstractInstruction', + ['context' => $context] + ); } public function testGetInstructions() @@ -30,8 +33,8 @@ public function testGetInstructions() $method->expects($this->once()) ->method('getInstructions') ->willReturn('instructions'); - $this->_object->setData('method', $method); + $this->_model->setData('method', $method); - $this->assertEquals('instructions', $this->_object->getInstructions()); + $this->assertEquals('instructions', $this->_model->getInstructions()); } } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php deleted file mode 100644 index ba0a899bb48b4..0000000000000 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Form/Cashondelivery.php +++ /dev/null @@ -1,37 +0,0 @@ -_object = $objectManagerHelper->getObject('Magento\OfflinePayments\Block\Form\Cashondelivery'); - } - - public function testGetInstructions() - { - $method = $this->getMock( - 'Magento\Payment\Model\MethodInterface', - ['getInstructions', 'getCode', 'getFormBlockType', 'getTitle'], - [], - '', - false - ); - $method->expects($this->once()) - ->method('getInstructions') - ->willReturn('instructions'); - $this->_object->setData('method', $method); - - $this->assertEquals('instructions', $this->_object->getInstructions()); - } -} diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php index 88314b0b1af9a..04748038a9c2d 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Block/Info/CheckmoTest.php @@ -10,33 +10,12 @@ class CheckmoTest extends \PHPUnit_Framework_TestCase /** * @var \Magento\OfflinePayments\Block\Info\Checkmo */ - protected $_object; - - /** - * @var \PHPUnit_Framework_MockObject_MockObject - */ - protected $_scopeConfig; + protected $_model; protected function setUp() { - $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this); - $eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false); - $paymentDataMock = $this->getMock('Magento\Payment\Helper\Data', [], [], '', false); - $this->_scopeConfig = $this->getMock( - 'Magento\Framework\App\Config\ScopeConfigInterface', - ['getValue', 'isSetFlag'], - [], - '', - false - ); - $this->_object = $objectManagerHelper->getObject( - 'Magento\OfflinePayments\Block\Info\Checkmo', - [ - 'eventManager' => $eventManager, - 'paymentData' => $paymentDataMock, - 'scopeConfig' => $this->_scopeConfig, - ] - ); + $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false); + $this->_model = new \Magento\OfflinePayments\Block\Info\Checkmo($context); } /** @@ -48,9 +27,9 @@ public function testGetPayableTo($details, $expected) $info->expects($this->once()) ->method('getAdditionalData') ->willReturn(serialize($details)); - $this->_object->setData('info', $info); + $this->_model->setData('info', $info); - $this->assertEquals($expected, $this->_object->getPayableTo()); + $this->assertEquals($expected, $this->_model->getPayableTo()); } /** @@ -73,9 +52,9 @@ public function testGetMailingAddress($details, $expected) $info->expects($this->once()) ->method('getAdditionalData') ->willReturn(serialize($details)); - $this->_object->setData('info', $info); + $this->_model->setData('info', $info); - $this->assertEquals($expected, $this->_object->getMailingAddress()); + $this->assertEquals($expected, $this->_model->getMailingAddress()); } /** @@ -88,4 +67,19 @@ public function getMailingAddressDataProvider() ['', ''] ]; } + + public function testConvertAdditionalDataIsNeverCalled() + { + $info = $this->getMock('Magento\Payment\Model\Info', ['getAdditionalData'], [], '', false); + $info->expects($this->once()) + ->method('getAdditionalData') + ->willReturn(serialize(['mailing_address' => 'blah@blah.com'])); + $this->_model->setData('info', $info); + + // First we set the property $this->_mailingAddress + $this->_model->getMailingAddress(); + + // And now we get already setted property $this->_mailingAddress + $this->assertEquals('blah@blah.com', $this->_model->getMailingAddress()); + } } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php index a8705a4dc8f03..18fb24e1ae8e9 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/BanktransferTest.php @@ -37,14 +37,4 @@ public function testGetInfoBlockType() { $this->assertEquals('Magento\Payment\Block\Info\Instructions', $this->_object->getInfoBlockType()); } - - public function testGetInstructions() - { - $this->_object->setStore(1); - $this->_scopeConfig->expects($this->once()) - ->method('getValue') - ->with('payment/banktransfer/instructions', 'store', 1) - ->willReturn('payment configuration'); - $this->assertEquals('payment configuration', $this->_object->getInstructions()); - } } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php index 97bdf1127e547..cd4d60d27533e 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/CashondeliveryTest.php @@ -39,14 +39,4 @@ public function testGetInfoBlockType() { $this->assertEquals('Magento\Payment\Block\Info\Instructions', $this->_object->getInfoBlockType()); } - - public function testGetInstructions() - { - $this->_object->setStore(1); - $this->_scopeConfig->expects($this->once()) - ->method('getValue') - ->with('payment/cashondelivery/instructions', 'store', 1) - ->willReturn('payment configuration'); - $this->assertEquals('payment configuration', $this->_object->getInstructions()); - } } diff --git a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php index 34f9c0da865f7..708b25093f52b 100644 --- a/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflinePayments/Model/ObserverTest.php @@ -37,13 +37,13 @@ public function testBeforeOrderPaymentSave() ->with('instructions', 'payment configuration'); $method = $this->getMock( 'Magento\Payment\Model\MethodInterface', - ['getInstructions', 'getFormBlockType', 'getTitle', 'getCode'], + ['getConfigData', 'getFormBlockType', 'getTitle', 'getCode'], [], '', false ); $method->expects($this->once()) - ->method('getInstructions') + ->method('getConfigData') ->willReturn('payment configuration'); $payment->expects($this->once()) ->method('getMethodInstance') @@ -56,4 +56,29 @@ public function testBeforeOrderPaymentSave() ->willReturn($event); $this->_model->beforeOrderPaymentSave($observer); } + + public function testBeforeOrderPaymentSaveNoBanktransfer() + { + $observer = $this->getMock('Magento\Framework\Event\Observer', ['getEvent'], [], '', false); + $event = $this->getMock('Magento\Framework\Event', ['getPayment'], [], '', false); + $payment = $this->getMock( + 'Magento\Sales\Model\Order\Payment', + ['getMethod', 'setAdditionalInformation', 'getMethodInstance'], + [], + '', + false + ); + $payment->expects($this->once()) + ->method('getMethod') + ->willReturn('somepaymentmethod'); + $payment->expects($this->never()) + ->method('setAdditionalInformation'); + $event->expects($this->once()) + ->method('getPayment') + ->willReturn($payment); + $observer->expects($this->once()) + ->method('getEvent') + ->willReturn($event); + $this->_model->beforeOrderPaymentSave($observer); + } } diff --git a/dev/tests/unit/testsuite/Magento/Payment/Block/Info/InstructionsTest.php b/dev/tests/unit/testsuite/Magento/Payment/Block/Info/InstructionsTest.php index 43528a3ce3970..7c035de52c8a1 100644 --- a/dev/tests/unit/testsuite/Magento/Payment/Block/Info/InstructionsTest.php +++ b/dev/tests/unit/testsuite/Magento/Payment/Block/Info/InstructionsTest.php @@ -12,12 +12,7 @@ class InstructionsTest extends \PHPUnit_Framework_TestCase { /** - * @var \Magento\Framework\Object - */ - protected $_method; - - /** - * @var \Magento\Payment\Model\Info + * @var \Magento\Payment\Model\Info|\PHPUnit_Framework_MockObject_MockObject */ protected $_info; @@ -28,28 +23,44 @@ class InstructionsTest extends \PHPUnit_Framework_TestCase protected function setUp() { - $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this); - $this->_method = new \Magento\Framework\Object(); - $this->_info = $objectManagerHelper->getObject('Magento\Payment\Model\Info'); - $this->_instructions = $objectManagerHelper->getObject('Magento\Payment\Block\Info\Instructions'); - - $this->_info->setMethodInstance($this->_method); - $this->_instructions->setInfo($this->_info); + $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false); + $this->_instructions = new \Magento\Payment\Block\Info\Instructions($context); + $this->_info = $this->getMock('Magento\Payment\Model\Info', [], [], '', false); + $this->_instructions->setData('info', $this->_info); } - public function testGetInstructionsSetInstructions() + public function testGetInstructionAdditionalInformation() { - $this->assertNull($this->_instructions->getInstructions()); - $testInstruction = 'first test'; - $this->_method->setInstructions($testInstruction); - $this->assertEquals($testInstruction, $this->_instructions->getInstructions()); + $this->_info->expects($this->once()) + ->method('getAdditionalInformation') + ->with('instructions') + ->willReturn('get the instruction here'); + $this->assertEquals('get the instruction here', $this->_instructions->getInstructions()); + + // And we get the already setted param $this->_instructions + $this->assertEquals('get the instruction here', $this->_instructions->getInstructions()); } - public function testGetInstructionsSetInformation() + public function testGetInstruction() { - $this->assertNull($this->_instructions->getInstructions()); - $testInstruction = 'second test'; - $this->_info->setAdditionalInformation('instructions', $testInstruction); - $this->assertEquals($testInstruction, $this->_instructions->getInstructions()); + $methodInstance = $this->getMock( + 'Magento\Payment\Model\MethodInterface', + ['getConfigData', 'getCode', 'getFormBlockType', 'getTitle'], + [], + '', + false + ); + $methodInstance->expects($this->once()) + ->method('getConfigData') + ->with('instructions') + ->willReturn('get the instruction here'); + $this->_info->expects($this->once()) + ->method('getAdditionalInformation') + ->with('instructions') + ->willReturn(false); + $this->_info->expects($this->once()) + ->method('getMethodInstance') + ->willReturn($methodInstance); + $this->assertEquals('get the instruction here', $this->_instructions->getInstructions()); } } From 8b90f638bee56a30dd8b9a52b059071111b71bb1 Mon Sep 17 00:00:00 2001 From: Iryna Savchenko Date: Tue, 20 Jan 2015 19:59:22 +0200 Subject: [PATCH 14/17] MAGETWO-31363: [MPI] Unit and Integration tests coverage --- app/code/Magento/OfflinePayments/Model/Observer.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/code/Magento/OfflinePayments/Model/Observer.php b/app/code/Magento/OfflinePayments/Model/Observer.php index bafe632349cfe..1cb45ac753f56 100644 --- a/app/code/Magento/OfflinePayments/Model/Observer.php +++ b/app/code/Magento/OfflinePayments/Model/Observer.php @@ -21,9 +21,7 @@ public function beforeOrderPaymentSave(\Magento\Framework\Event\Observer $observ { /** @var \Magento\Sales\Model\Order\Payment $payment */ $payment = $observer->getEvent()->getPayment(); - if ($payment->getMethod() === - \Magento\OfflinePayments\Model\Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE - ) { + if ($payment->getMethod() === Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE) { $payment->setAdditionalInformation( 'instructions', $payment->getMethodInstance()->getConfigData('instructions') From 8d9563a7f49d04ccc53b688ac227d2033bf4289b Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Wed, 21 Jan 2015 13:25:51 +0200 Subject: [PATCH 15/17] MAGETWO-31363: [MPI] Unit and Integration tests coverage - fix static --- .../Block/Adminhtml/Carrier/Tablerate/GridTest.php | 9 +++++---- .../Model/Config/Backend/TablerateTest.php | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php index f569f9515ddf4..09434687725e9 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Block/Adminhtml/Carrier/Tablerate/GridTest.php @@ -23,17 +23,17 @@ class GridTest extends \PHPUnit_Framework_TestCase protected $backendHelperMock; /** - * @var \Magento\OfflineShipping\Model\Resource\Carrier\Tablerate\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject + * @var \PHPUnit_Framework_MockObject_MockObject */ protected $tablerateMock; /** - * @var \Magento\Backend\Block\Template\Context|\PHPUnit_Framework_MockObject_MockObject + * @var \PHPUnit_Framework_MockObject_MockObject */ protected $context; /** - * @var \Magento\OfflineShipping\Model\Resource\Carrier\Tablerate\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject + * @var \PHPUnit_Framework_MockObject_MockObject */ protected $collectionFactoryMock; @@ -53,7 +53,8 @@ protected function setUp() ->disableOriginalConstructor() ->getMock(); - $this->collectionFactoryMock = $this->getMockBuilder('\Magento\OfflineShipping\Model\Resource\Carrier\Tablerate\CollectionFactory') + $this->collectionFactoryMock = + $this->getMockBuilder('\Magento\OfflineShipping\Model\Resource\Carrier\Tablerate\CollectionFactory') ->disableOriginalConstructor() ->getMock(); diff --git a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php index 869c408052d13..16ff0b107650f 100644 --- a/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php +++ b/dev/tests/unit/testsuite/Magento/OfflineShipping/Model/Config/Backend/TablerateTest.php @@ -19,7 +19,8 @@ class TablerateTest extends \PHPUnit_Framework_TestCase protected function setUp() { - $this->tableateFactoryMock = $this->getMockBuilder('Magento\OfflineShipping\Model\Resource\Carrier\TablerateFactory') + $this->tableateFactoryMock = + $this->getMockBuilder('Magento\OfflineShipping\Model\Resource\Carrier\TablerateFactory') ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); From 54e0c43e795f93dd5d6077bf9aa74934048e868d Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Wed, 21 Jan 2015 13:36:45 +0200 Subject: [PATCH 16/17] MAGETWO-32782: [TD] Third party interfaces are not supported by single-tenant compiler - fix static --- .../testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php | 2 +- dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php | 4 +++- dev/tools/Magento/Tools/Di/Definition/Collection.php | 3 +-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php index 5bfc5e0cc7097..a4bb3a8ee730a 100644 --- a/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php +++ b/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php @@ -106,7 +106,7 @@ public function testGenerateCachePerScopeGlobal() ->willReturnMap($this->getPreferencesMap()); $isConcreteMap = []; - foreach($definitionCollection->getInstancesNamesList() as $instanceType) { + foreach ($definitionCollection->getInstancesNamesList() as $instanceType) { $isConcreteMap[] = [$instanceType, strpos($instanceType, 'Interface') === false]; $getResolvedConstructorArgumentsMap[] = [ diff --git a/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php b/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php index 79ce889e6ffcb..f885f6fd12cd3 100644 --- a/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php +++ b/dev/tools/Magento/Tools/Di/Compiler/Config/Reader.php @@ -1,6 +1,5 @@ definitions[$instance] = $arguments; } - /**+ + /** * Returns instance arguments * * @param string $instanceName From 7f4816b8082acc001d2691e76e16227f7d742c71 Mon Sep 17 00:00:00 2001 From: Kostiantyn Poida Date: Wed, 21 Jan 2015 15:03:54 +0200 Subject: [PATCH 17/17] MAGETWO-32782: [TD] Third party interfaces are not supported by single-tenant compiler - fix static --- .../testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php index a4bb3a8ee730a..0c2f708332fec 100644 --- a/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php +++ b/dev/tests/unit/testsuite/Magento/Tools/Di/Compiler/Config/ReaderTest.php @@ -216,7 +216,7 @@ private function getPreferencesMap() private function getResolvedArguments($arguments) { return empty($arguments) ? null : array_map( - function($argument) { + function ($argument) { return 'resolved_' . $argument; }, $arguments