diff --git a/app/code/Magento/CheckoutAgreements/Block/Agreements.php b/app/code/Magento/CheckoutAgreements/Block/Agreements.php index f43827a6b58201b97f3e4ae9fd89e485093523d3..c6dbc4ac09b57ac82b3b47577512f623c59219ff 100644 --- a/app/code/Magento/CheckoutAgreements/Block/Agreements.php +++ b/app/code/Magento/CheckoutAgreements/Block/Agreements.php @@ -4,10 +4,10 @@ * See COPYING.txt for license details. */ -// @codingStandardsIgnoreFile - namespace Magento\CheckoutAgreements\Block; +use Magento\Store\Model\ScopeInterface; + class Agreements extends \Magento\Framework\View\Element\Template { /** @@ -35,16 +35,12 @@ class Agreements extends \Magento\Framework\View\Element\Template public function getAgreements() { if (!$this->hasAgreements()) { - if (!$this->_scopeConfig->isSetFlag('checkout/options/enable_agreements', \Magento\Store\Model\ScopeInterface::SCOPE_STORE)) { - $agreements = []; - } else { + $agreements = []; + if ($this->_scopeConfig->isSetFlag('checkout/options/enable_agreements', ScopeInterface::SCOPE_STORE)) { /** @var \Magento\CheckoutAgreements\Model\Resource\Agreement\Collection $agreements */ - $agreements = $this->_agreementCollectionFactory->create()->addStoreFilter( - $this->_storeManager->getStore()->getId() - )->addFieldToFilter( - 'is_active', - 1 - ); + $agreements = $this->_agreementCollectionFactory->create(); + $agreements->addStoreFilter($this->_storeManager->getStore()->getId()); + $agreements->addFieldToFilter('is_active', 1); } $this->setAgreements($agreements); } diff --git a/app/code/Magento/CheckoutAgreements/Model/Agreement.php b/app/code/Magento/CheckoutAgreements/Model/Agreement.php index 98b1b36b153c100955c8d7d4dd71b1196f629fcd..b29030f81248c7d3d3a46c17547f91c68e907fd6 100644 --- a/app/code/Magento/CheckoutAgreements/Model/Agreement.php +++ b/app/code/Magento/CheckoutAgreements/Model/Agreement.php @@ -6,7 +6,6 @@ namespace Magento\CheckoutAgreements\Model; use Magento\CheckoutAgreements\Api\Data\AgreementInterface; -use Magento\Framework\Model\AbstractModel; class Agreement extends \Magento\Framework\Model\AbstractExtensibleModel implements AgreementInterface { diff --git a/app/code/Magento/CheckoutAgreements/Model/AgreementsConfigProvider.php b/app/code/Magento/CheckoutAgreements/Model/AgreementsConfigProvider.php index 8a14acbb404b081fa01fb0eaf51171e06a0b77f3..64085724b8c7f01419f9dddf98db47e9f8f00b4d 100644 --- a/app/code/Magento/CheckoutAgreements/Model/AgreementsConfigProvider.php +++ b/app/code/Magento/CheckoutAgreements/Model/AgreementsConfigProvider.php @@ -34,8 +34,7 @@ class AgreementsConfigProvider implements ConfigProviderInterface { if ($this->scopeConfiguration->isSetFlag(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE)) { return ['checkoutAgreementsEnabled' => true]; - } else { - return []; } + return []; } } diff --git a/app/code/Magento/CheckoutAgreements/Model/AgreementsProvider.php b/app/code/Magento/CheckoutAgreements/Model/AgreementsProvider.php index a8e88e80ff2fc4bcec1f56b9536f125e3e4f2320..43831218a53f1c1bc37be2e5cab31f94684b3b8e 100644 --- a/app/code/Magento/CheckoutAgreements/Model/AgreementsProvider.php +++ b/app/code/Magento/CheckoutAgreements/Model/AgreementsProvider.php @@ -13,16 +13,24 @@ use Magento\Store\Model\ScopeInterface; */ class AgreementsProvider implements AgreementsProviderInterface { - /** Path to config node */ + /** + * Path to config node + */ const PATH_ENABLED = 'checkout/options/enable_agreements'; - /** @var \Magento\CheckoutAgreements\Model\Resource\Agreement\CollectionFactory */ + /** + * @var Resource\Agreement\CollectionFactory + */ protected $agreementCollectionFactory; - /** @var \Magento\Framework\App\Config\ScopeConfigInterface */ + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ protected $scopeConfig; - /** @var \Magento\Store\Model\StoreManagerInterface */ + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ protected $storeManager; /** @@ -47,13 +55,13 @@ class AgreementsProvider implements AgreementsProviderInterface */ public function getRequiredAgreementIds() { - if (!$this->scopeConfig->isSetFlag(self::PATH_ENABLED, ScopeInterface::SCOPE_STORE)) { - return []; - } else { - return $this->agreementCollectionFactory->create() - ->addStoreFilter($this->storeManager->getStore()->getId()) - ->addFieldToFilter('is_active', 1) - ->getAllIds(); + $agreementIds = []; + if ($this->scopeConfig->isSetFlag(self::PATH_ENABLED, ScopeInterface::SCOPE_STORE)) { + $agreementCollection = $this->agreementCollectionFactory->create(); + $agreementCollection->addStoreFilter($this->storeManager->getStore()->getId()); + $agreementCollection->addFieldToFilter('is_active', 1); + $agreementIds = $agreementCollection->getAllIds(); } + return $agreementIds; } } diff --git a/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php b/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php index 845bb2a9d2c742f1232e9a5ebfeb23ec9b85780f..b7074d5c97b2f6b21ee0166391bc3c759a7fd170 100644 --- a/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php +++ b/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php @@ -4,8 +4,6 @@ * See COPYING.txt for license details. */ -// @codingStandardsIgnoreFile - namespace Magento\CheckoutAgreements\Model; use Magento\CheckoutAgreements\Model\Resource\Agreement\CollectionFactory as AgreementCollectionFactory; diff --git a/app/code/Magento/CheckoutAgreements/Test/Unit/Block/AgreementsTest.php b/app/code/Magento/CheckoutAgreements/Test/Unit/Block/AgreementsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..f898a3f8ef40a98365b7e640709d596faf14e7d8 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Unit/Block/AgreementsTest.php @@ -0,0 +1,99 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\CheckoutAgreements\Test\Unit\Block; + +use Magento\Store\Model\ScopeInterface; +use Magento\CheckoutAgreements\Model\AgreementsProvider; + +class AgreementsTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\CheckoutAgreements\Block\Agreements + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $agreementCollFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $scopeConfigMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $storeManagerMock; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->agreementCollFactoryMock = $this->getMock( + '\Magento\CheckoutAgreements\Model\Resource\Agreement\CollectionFactory', + ['create'], + [], + '', + false + ); + + $this->scopeConfigMock = $this->getMock('\Magento\Framework\App\Config\ScopeConfigInterface'); + $this->storeManagerMock = $this->getMock('\Magento\Store\Model\StoreManagerInterface'); + + $contextMock = $this->getMock('\Magento\Framework\View\Element\Template\Context', [], [], '', false); + $contextMock->expects($this->once())->method('getScopeConfig')->willReturn($this->scopeConfigMock); + $contextMock->expects($this->once())->method('getStoreManager')->willReturn($this->storeManagerMock); + + $this->model = $objectManager->getObject( + 'Magento\CheckoutAgreements\Block\Agreements', + [ + 'agreementCollectionFactory' => $this->agreementCollFactoryMock, + 'context' => $contextMock + ] + ); + } + + public function testGetAgreements() + { + $storeId = 100; + $this->scopeConfigMock->expects($this->once()) + ->method('isSetFlag') + ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE) + ->willReturn(true); + + $agreementCollection = $this->getMock( + '\Magento\CheckoutAgreements\Model\Resource\Agreement\Collection', + [], + [], + '', + false + ); + $this->agreementCollFactoryMock->expects($this->once())->method('create')->willReturn($agreementCollection); + + $storeMock = $this->getMock('\Magento\Store\Model\Store', [], [], '', false); + $storeMock->expects($this->once())->method('getId')->willReturn($storeId); + $this->storeManagerMock->expects($this->once())->method('getStore')->willReturn($storeMock); + + $agreementCollection->expects($this->once())->method('addStoreFilter')->with($storeId)->willReturnSelf(); + $agreementCollection->expects($this->once()) + ->method('addFieldToFilter') + ->with('is_active', 1) + ->willReturnSelf(); + + $this->assertEquals($agreementCollection, $this->model->getAgreements()); + } + + public function testGetAgreementsIfAgreementsDisabled() + { + $expectedResult = []; + $this->scopeConfigMock->expects($this->once()) + ->method('isSetFlag') + ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE) + ->willReturn(false); + $this->assertEquals($expectedResult, $this->model->getAgreements()); + } +} diff --git a/app/code/Magento/CheckoutAgreements/Test/Unit/Block/Checkout/LayoutProcessorTest.php b/app/code/Magento/CheckoutAgreements/Test/Unit/Block/Checkout/LayoutProcessorTest.php new file mode 100644 index 0000000000000000000000000000000000000000..5af45798bbbc0bf5381a225cfac77faddfbd1876 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Unit/Block/Checkout/LayoutProcessorTest.php @@ -0,0 +1,102 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\CheckoutAgreements\Test\Unit\Block\Checkout; + +class LayoutProcessorTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\CheckoutAgreements\Block\Checkout\LayoutProcessor + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $escaperMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $agreementsRepositoryMock; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->escaperMock = $this->getMock('\Magento\Framework\Escaper', [], [], '', false); + $this->agreementsRepositoryMock = $this->getMock( + '\Magento\CheckoutAgreements\Api\CheckoutAgreementsRepositoryInterface' + ); + + $this->model = $objectManager->getObject( + 'Magento\CheckoutAgreements\Block\Checkout\LayoutProcessor', + [ + 'escaper' => $this->escaperMock, + 'checkoutAgreementsRepository' => $this->agreementsRepositoryMock + ] + ); + } + + public function testProcessIfAgreementWithHtml() + { + $agreementData = [ + 'content' => 'content', + 'height' => '100', + 'checkboxText' => 'checkbox_text' + ]; + + $jsLayout['components']['checkout']['children']['steps']['children']['billing-step']['children']['payment'] + ['children']['payments-list']['children']['before-place-order']['children']['checkout-agreements-modal'] + ['config']['agreementConfiguration'] = null; + + $expectedResult = $jsLayout; + $expectedResult['components']['checkout']['children']['steps']['children']['billing-step']['children']['payment'] + ['children']['payments-list']['children']['before-place-order']['children']['checkout-agreements-modal'] + ['config']['agreementConfiguration'][] = $agreementData; + + $agreementMock = $this->getMock('\Magento\CheckoutAgreements\Api\Data\AgreementInterface'); + $this->agreementsRepositoryMock->expects($this->once())->method('getList')->willReturn([$agreementMock]); + + $agreementMock->expects($this->once())->method('getIsHtml')->willReturn(true); + $agreementMock->expects($this->once())->method('getContent')->willReturn($agreementData['content']); + $agreementMock->expects($this->once())->method('getContentHeight')->willReturn($agreementData['height']); + $agreementMock->expects($this->once())->method('getCheckboxText')->willReturn($agreementData['checkboxText']); + + $this->assertEquals($expectedResult, $this->model->process($jsLayout)); + } + + public function testProcessIfAgreementRichText() + { + $agreementData = [ + 'content' => 'content', + 'height' => '100', + 'checkboxText' => 'checkbox_text' + ]; + + $jsLayout['components']['checkout']['children']['steps']['children']['billing-step']['children']['payment'] + ['children']['payments-list']['children']['before-place-order']['children']['checkout-agreements-modal'] + ['config']['agreementConfiguration'] = null; + + $expectedResult = $jsLayout; + $expectedResult['components']['checkout']['children']['steps']['children']['billing-step']['children']['payment'] + ['children']['payments-list']['children']['before-place-order']['children']['checkout-agreements-modal'] + ['config']['agreementConfiguration'][] = $agreementData; + + $agreementMock = $this->getMock('\Magento\CheckoutAgreements\Api\Data\AgreementInterface'); + $this->agreementsRepositoryMock->expects($this->once())->method('getList')->willReturn([$agreementMock]); + + $this->escaperMock->expects($this->once())->method('escapeHtml') + ->with($agreementData['content']) + ->willReturn($agreementData['content']); + + $agreementMock->expects($this->once())->method('getIsHtml')->willReturn(false); + $agreementMock->expects($this->once())->method('getContent')->willReturn($agreementData['content']); + $agreementMock->expects($this->once())->method('getContentHeight')->willReturn($agreementData['height']); + $agreementMock->expects($this->once())->method('getCheckboxText')->willReturn($agreementData['checkboxText']); + + $this->assertEquals($expectedResult, $this->model->process($jsLayout)); + } +} diff --git a/app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsConfigProviderTest.php b/app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsConfigProviderTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c59b745e6d1ad69b5a1bc5c1959c9e8a64d929f7 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsConfigProviderTest.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\CheckoutAgreements\Test\Unit\Model; + +use Magento\Store\Model\ScopeInterface; +use Magento\CheckoutAgreements\Model\AgreementsProvider; + +class AgreementsConfigProviderTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\CheckoutAgreements\Model\AgreementsConfigProvider + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $scopeConfigMock; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->scopeConfigMock = $this->getMock('\Magento\Framework\App\Config\ScopeConfigInterface'); + $this->model = $objectManager->getObject( + 'Magento\CheckoutAgreements\Model\AgreementsConfigProvider', + ['scopeConfiguration' => $this->scopeConfigMock] + ); + } + + public function testGetConfigIfAgreementsEnabled() + { + $expectedResult = ['checkoutAgreementsEnabled' => true]; + $this->scopeConfigMock->expects($this->once()) + ->method('isSetFlag') + ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE) + ->willReturn(true); + $this->assertEquals($expectedResult, $this->model->getConfig()); + } + + public function testGetConfigIfAgreementsDisabled() + { + $expectedResult = []; + $this->scopeConfigMock->expects($this->once()) + ->method('isSetFlag') + ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE) + ->willReturn(false); + $this->assertEquals($expectedResult, $this->model->getConfig()); + } +} diff --git a/app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsProviderTest.php b/app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsProviderTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c19fb920e31556638a695f9075f68df7c4540543 --- /dev/null +++ b/app/code/Magento/CheckoutAgreements/Test/Unit/Model/AgreementsProviderTest.php @@ -0,0 +1,98 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\CheckoutAgreements\Test\Unit\Model; + +use Magento\Store\Model\ScopeInterface; +use Magento\CheckoutAgreements\Model\AgreementsProvider; + +class AgreementsProviderTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\CheckoutAgreements\Model\AgreementsProvider + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $scopeConfigMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $agreementCollFactoryMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $storeManagerMock; + + protected function setUp() + { + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->agreementCollFactoryMock = $this->getMock( + '\Magento\CheckoutAgreements\Model\Resource\Agreement\CollectionFactory', + [], + [], + '', + false + ); + $this->storeManagerMock = $this->getMock('\Magento\Store\Model\StoreManagerInterface'); + $this->scopeConfigMock = $this->getMock('\Magento\Framework\App\Config\ScopeConfigInterface'); + + $this->model = $objectManager->getObject( + 'Magento\CheckoutAgreements\Model\AgreementsProvider', + [ + 'agreementCollectionFactory' => $this->agreementCollFactoryMock, + 'storeManager' => $this->storeManagerMock, + 'scopeConfig' => $this->scopeConfigMock + ] + ); + } + + public function testGetRequiredAgreementIdsIfAgreementsEnabled() + { + $storeId = 100; + $expectedResult = [1, 2, 3, 4, 5]; + $this->scopeConfigMock->expects($this->once()) + ->method('isSetFlag') + ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE) + ->willReturn(true); + + $agreementCollection = $this->getMock( + '\Magento\CheckoutAgreements\Model\Resource\Agreement\Collection', + [], + [], + '', + false + ); + $this->agreementCollFactoryMock->expects($this->once())->method('create')->willReturn($agreementCollection); + + $storeMock = $this->getMock('\Magento\Store\Model\Store', [], [], '', false); + $storeMock->expects($this->once())->method('getId')->willReturn($storeId); + $this->storeManagerMock->expects($this->once())->method('getStore')->willReturn($storeMock); + + $agreementCollection->expects($this->once())->method('addStoreFilter')->with($storeId)->willReturnSelf(); + $agreementCollection->expects($this->once()) + ->method('addFieldToFilter') + ->with('is_active', 1) + ->willReturnSelf(); + $agreementCollection->expects($this->once())->method('getAllIds')->willReturn($expectedResult); + + $this->assertEquals($expectedResult, $this->model->getRequiredAgreementIds()); + } + + public function testGetRequiredAgreementIdsIfAgreementsDisabled() + { + $expectedResult = []; + $this->scopeConfigMock->expects($this->once()) + ->method('isSetFlag') + ->with(AgreementsProvider::PATH_ENABLED, ScopeInterface::SCOPE_STORE) + ->willReturn(false); + $this->assertEquals($expectedResult, $this->model->getRequiredAgreementIds()); + } +}