123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Weee\Test\Unit\Pricing\Render;
- use Magento\Weee\Pricing\Render\Adjustment;
- /**
- * Class AdjustmentTest for testing Adjustment class
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class AdjustmentTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Weee\Pricing\Render\Adjustment
- */
- protected $model;
- /**
- * @var \Magento\Weee\Helper\Data
- */
- protected $weeeHelperMock;
- /**
- * Context mock
- *
- * @var \Magento\Framework\View\Element\Template\Context
- */
- protected $contextMock;
- /**
- * Price currency model mock
- *
- * @var \Magento\Directory\Model\PriceCurrency
- */
- protected $priceCurrencyMock;
- /**
- * Set up mocks for tested class
- */
- protected function setUp()
- {
- $this->contextMock = $this->createPartialMock(
- \Magento\Framework\View\Element\Template\Context::class,
- ['getStoreConfig', 'getEventManager', 'getScopeConfig']
- );
- $this->priceCurrencyMock = $this->getMockForAbstractClass(
- \Magento\Framework\Pricing\PriceCurrencyInterface::class,
- [],
- '',
- true,
- true,
- true,
- []
- );
- $this->weeeHelperMock = $this->createMock(\Magento\Weee\Helper\Data::class);
- $eventManagerMock = $this->getMockBuilder(\Magento\Framework\Event\ManagerInterface::class)
- ->disableOriginalConstructor()
- ->getMockForAbstractClass();
- $storeConfigMock = $this->getMockBuilder(\Magento\Store\Model\Store\Config::class)
- ->disableOriginalConstructor()
- ->getMock();
- $scopeConfigMock = $this->getMockForAbstractClass(\Magento\Framework\App\Config\ScopeConfigInterface::class);
- $this->contextMock->expects($this->any())
- ->method('getEventManager')
- ->will($this->returnValue($eventManagerMock));
- $this->contextMock->expects($this->any())
- ->method('getStoreConfig')
- ->will($this->returnValue($storeConfigMock));
- $this->contextMock->expects($this->any())
- ->method('getScopeConfig')
- ->will($this->returnValue($scopeConfigMock));
- $this->model = new Adjustment(
- $this->contextMock,
- $this->priceCurrencyMock,
- $this->weeeHelperMock
- );
- }
- /**
- * Test for method getAdjustmentCode
- */
- public function testGetAdjustmentCode()
- {
- $this->assertEquals(\Magento\Weee\Pricing\Adjustment::ADJUSTMENT_CODE, $this->model->getAdjustmentCode());
- }
- /**
- * Test for method getFinalAmount
- */
- public function testGetFinalAmount()
- {
- $this->priceCurrencyMock->expects($this->once())
- ->method('format')
- ->with(10, true, 2)
- ->will($this->returnValue("$10.00"));
- $displayValue = 10;
- $expectedValue = "$10.00";
- $typeOfDisplay = 1; //Just to set it to not false
- /** @var \Magento\Framework\Pricing\Render\Amount $amountRender */
- $amountRender = $this->getMockBuilder(\Magento\Framework\Pricing\Render\Amount::class)
- ->disableOriginalConstructor()
- ->setMethods(['getSaleableItem', 'getDisplayValue', 'getAmount'])
- ->getMock();
- $amountRender->expects($this->any())
- ->method('getDisplayValue')
- ->will($this->returnValue($displayValue));
- $this->weeeHelperMock->expects($this->any())->method('typeOfDisplay')->will($this->returnValue($typeOfDisplay));
- /** @var \Magento\Framework\Pricing\Amount\Base $baseAmount */
- $baseAmount = $this->getMockBuilder(\Magento\Framework\Pricing\Amount\Base::class)
- ->disableOriginalConstructor()
- ->setMethods(['getValue'])
- ->getMock();
- $amountRender->expects($this->any())
- ->method('getAmount')
- ->will($this->returnValue($baseAmount));
- $this->model->render($amountRender);
- $result = $this->model->getFinalAmount();
- $this->assertEquals($expectedValue, $result);
- }
- /**
- * Test for method showInclDescr
- *
- * @dataProvider showInclDescrDataProvider
- */
- public function testShowInclDescr($typeOfDisplay, $amount, $expectedResult)
- {
- /** @var \Magento\Framework\Pricing\Render\Amount $amountRender */
- $amountRender = $this->getMockBuilder(\Magento\Framework\Pricing\Render\Amount::class)
- ->disableOriginalConstructor()
- ->setMethods(['getSaleableItem', 'getDisplayValue', 'getAmount'])
- ->getMock();
- /** @var \Magento\Catalog\Model\Product $saleable */
- $saleable = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
- ->disableOriginalConstructor()
- ->setMethods(['__wakeup'])
- ->getMock();
- /** @var \Magento\Framework\Pricing\Amount\Base $baseAmount */
- $baseAmount = $this->getMockBuilder(\Magento\Framework\Pricing\Amount\Base::class)
- ->disableOriginalConstructor()
- ->setMethods(['getValue'])
- ->getMock();
- $baseAmount->expects($this->any())
- ->method('getValue')
- ->will($this->returnValue($amount));
- $amountRender->expects($this->any())
- ->method('getAmount')
- ->will($this->returnValue($baseAmount));
- $callback = function ($argument) use ($typeOfDisplay) {
- if (is_array($argument)) {
- return in_array($typeOfDisplay, $argument);
- } else {
- return $argument == $typeOfDisplay;
- }
- };
- $this->weeeHelperMock->expects($this->any())->method('typeOfDisplay')->will($this->returnCallback($callback));
- $this->weeeHelperMock->expects($this->any())->method('getAmountExclTax')->will($this->returnValue($amount));
- $amountRender->expects($this->any())->method('getSaleableItem')->will($this->returnValue($saleable));
- $this->model->render($amountRender);
- $result = $this->model->showInclDescr();
- $this->assertEquals($expectedResult, $result);
- }
- /**
- * Data provider for testShowInclDescr
- *
- * @return array
- */
- public function showInclDescrDataProvider()
- {
- return [
- [\Magento\Weee\Model\Tax::DISPLAY_INCL, 1.23, false],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL_DESCR, 1.23, true],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL_DESCR_INCL, 1.23, false],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL, 1.23, false],
- [4, 1.23, false],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL, 0, false],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL_DESCR, 0, false],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL_DESCR_INCL, 0, false],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL, 0, false],
- [4, 0, false],
- ];
- }
- /**
- * Test method for showExclDescrIncl
- *
- * @param int $typeOfDisplay
- * @param float $amount
- * @param bool $expectedResult
- * @dataProvider showExclDescrInclDataProvider
- */
- public function testShowExclDescrIncl($typeOfDisplay, $amount, $expectedResult)
- {
- /** @var \Magento\Framework\Pricing\Render\Amount $amountRender */
- $amountRender = $this->getMockBuilder(\Magento\Framework\Pricing\Render\Amount::class)
- ->disableOriginalConstructor()
- ->setMethods(['getSaleableItem', 'getDisplayValue', 'getAmount'])
- ->getMock();
- /** @var \Magento\Catalog\Model\Product $saleable */
- $saleable = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
- ->disableOriginalConstructor()
- ->setMethods(['__wakeup'])
- ->getMock();
- /** @var \Magento\Framework\Pricing\Amount\Base $baseAmount */
- $baseAmount = $this->getMockBuilder(\Magento\Framework\Pricing\Amount\Base::class)
- ->disableOriginalConstructor()
- ->setMethods(['getValue'])
- ->getMock();
- $baseAmount->expects($this->any())
- ->method('getValue')
- ->will($this->returnValue($amount));
- $amountRender->expects($this->any())
- ->method('getAmount')
- ->will($this->returnValue($baseAmount));
- $callback = function ($argument) use ($typeOfDisplay) {
- if (is_array($argument)) {
- return in_array($typeOfDisplay, $argument);
- } else {
- return $argument == $typeOfDisplay;
- }
- };
- $this->weeeHelperMock->expects($this->any())->method('typeOfDisplay')->will($this->returnCallback($callback));
- $this->weeeHelperMock->expects($this->any())->method('getAmountExclTax')->will($this->returnValue($amount));
- $amountRender->expects($this->any())->method('getSaleableItem')->will($this->returnValue($saleable));
- $this->model->render($amountRender);
- $result = $this->model->showExclDescrIncl();
- $this->assertEquals($expectedResult, $result);
- }
- /**
- * Data provider for testShowExclDescrIncl
- *
- * @return array
- */
- public function showExclDescrInclDataProvider()
- {
- return [
- [\Magento\Weee\Model\Tax::DISPLAY_INCL, 1.23, false],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL_DESCR, 1.23, false],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL_DESCR_INCL, 1.23, true],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL, 1.23, false],
- [4, 1.23, false],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL, 0, false],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL_DESCR, 0, false],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL_DESCR_INCL, 0, false],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL, 0, false],
- [4, 0, false],
- ];
- }
- /**
- * Test for method getWeeeTaxAttributes
- *
- * @param int $typeOfDisplay
- * @param array $attributes
- * @param array $expectedResult
- * @dataProvider getWeeeTaxAttributesDataProvider
- */
- public function testGetWeeeTaxAttributes($typeOfDisplay, $attributes, $expectedResult)
- {
- /** @var \Magento\Framework\Pricing\Render\Amount $amountRender */
- $amountRender = $this->getMockBuilder(\Magento\Framework\Pricing\Render\Amount::class)
- ->disableOriginalConstructor()
- ->setMethods(['getSaleableItem', 'getDisplayValue', 'getAmount'])
- ->getMock();
- /** @var \Magento\Catalog\Model\Product $saleable */
- $saleable = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
- ->disableOriginalConstructor()
- ->setMethods(['__wakeup'])
- ->getMock();
- /** @var \Magento\Framework\Pricing\Amount\Base $baseAmount */
- $baseAmount = $this->getMockBuilder(\Magento\Framework\Pricing\Amount\Base::class)
- ->disableOriginalConstructor()
- ->setMethods(['getValue'])
- ->getMock();
- $amountRender->expects($this->any())
- ->method('getAmount')
- ->will($this->returnValue($baseAmount));
- $callback = function ($argument) use ($typeOfDisplay) {
- if (is_array($argument)) {
- return in_array($typeOfDisplay, $argument);
- } else {
- return $argument == $typeOfDisplay;
- }
- };
- $this->weeeHelperMock->expects($this->any())->method('typeOfDisplay')->will($this->returnCallback($callback));
- $this->weeeHelperMock->expects($this->any())
- ->method('getProductWeeeAttributesForDisplay')
- ->will($this->returnValue($attributes));
- $amountRender->expects($this->any())->method('getSaleableItem')->will($this->returnValue($saleable));
- $this->model->render($amountRender);
- $result = $this->model->getWeeeTaxAttributes();
- $this->assertEquals($expectedResult, $result);
- }
- /**
- * Data provider for testGetWeeeTaxAttributes
- *
- * @return array
- */
- public function getWeeeTaxAttributesDataProvider()
- {
- return [
- [\Magento\Weee\Model\Tax::DISPLAY_INCL, [1, 2, 3], []],
- [\Magento\Weee\Model\Tax::DISPLAY_INCL_DESCR, [1, 2, 3], [1, 2, 3]],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL_DESCR_INCL, [1, 2, 3], [1, 2, 3]],
- [\Magento\Weee\Model\Tax::DISPLAY_EXCL, [1, 2, 3], []],
- [4, [1, 2, 3], []],
- ];
- }
- /**
- * Test for method renderWeeeTaxAttribute
- *
- * @param \Magento\Framework\DataObject $attribute
- * @param string $expectedResult
- * @dataProvider renderWeeeTaxAttributeAmountDataProvider
- */
- public function testRenderWeeeTaxAttributeAmount($attribute, $expectedResult)
- {
- $this->priceCurrencyMock->expects($this->any())->method('convertAndFormat')->will($this->returnArgument(0));
- $result = $this->model->renderWeeeTaxAttribute($attribute);
- $this->assertEquals($expectedResult, $result);
- }
- /**
- * Data provider for testRenderWeeeTaxAttributeAmount
- *
- * @return array
- */
- public function renderWeeeTaxAttributeAmountDataProvider()
- {
- return [
- [new \Magento\Framework\DataObject(['amount' => 51]), 51],
- [new \Magento\Framework\DataObject(['amount' => false]), false],
- ];
- }
- /**
- * Test for method renderWeeeTaxAttributeName
- *
- * @param \Magento\Framework\DataObject $attribute
- * @param string $expectedResult
- * @dataProvider renderWeeeTaxAttributeNameDataProvider
- */
- public function testRenderWeeeTaxAttributeName($attribute, $expectedResult)
- {
- $this->priceCurrencyMock->expects($this->any())->method('convertAndFormat')->will($this->returnArgument(0));
- $result = $this->model->renderWeeeTaxAttributeName($attribute);
- $this->assertEquals($expectedResult, $result);
- }
- /**
- * Data provider for testRenderWeeeTaxAttributeName
- *
- * @return array
- */
- public function renderWeeeTaxAttributeNameDataProvider()
- {
- return [
- [new \Magento\Framework\DataObject(['name' => 51]), 51],
- [new \Magento\Framework\DataObject(['name' => false]), false],
- ];
- }
- /**
- * Test for method renderWeeeTaxAttributeWithTax
- *
- * @param \Magento\Framework\DataObject $attribute
- * @param string $expectedResult
- * @dataProvider renderWeeeTaxAttributeAmountWithTaxDataProvider
- */
- public function testRenderWeeeTaxAttributeWithTax($attribute, $expectedResult)
- {
- $this->priceCurrencyMock->expects($this->any())->method('convertAndFormat')->will($this->returnArgument(0));
- $result = $this->model->renderWeeeTaxAttributeWithTax($attribute);
- $this->assertEquals($expectedResult, $result);
- }
- /**
- * Data provider for testRenderWeeeTaxAttributeAmount
- *
- * @return array
- */
- public function renderWeeeTaxAttributeAmountWithTaxDataProvider()
- {
- return [
- [new \Magento\Framework\DataObject(['amount_excl_tax' => 50, 'tax_amount' => 5]), 55],
- [new \Magento\Framework\DataObject(['amount_excl_tax' => false]), false],
- ];
- }
- }
|