<?php /** * @copyright Vertex. All rights reserved. https://www.vertexinc.com/ * @author Mediotype https://www.mediotype.com/ */ namespace Vertex\Tax\Test\Unit\Model\Config\Backend; use Magento\Framework\App\Config\Value; use Magento\Framework\Math\Random; use Magento\Framework\Model\Context; use Magento\Framework\Registry; use Magento\Framework\App\Cache\TypeListInterface; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Event\ManagerInterface; use Vertex\Tax\Model\Config\Backend\TaxOverride; use Vertex\Tax\Model\Config\DeliveryTerm; use Vertex\Tax\Test\Unit\TestCase; /** * Test Class @see TaxOverride */ class TaxOverrideTest extends TestCase { /** @var DeliveryTerm|\PHPUnit_Framework_MockObject_MockObject */ private $deliveryTerm; /** @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject */ private $configMock; /** @var TypeListInterface|\PHPUnit_Framework_MockObject_MockObject */ private $cacheTypeListMock; /** @var Context|\PHPUnit_Framework_MockObject_MockObject */ private $context; /** @var ManagerInterface|\PHPUnit_Framework_MockObject_MockObject */ private $eventManagerMock; /** @var Value */ private $model; /** @var Random|\PHPUnit_Framework_MockObject_MockObject */ private $random; /** @var Registry|\PHPUnit_Framework_MockObject_MockObject */ private $registry; /** * @inheritdoc */ protected function setUp() // @codingStandardsIgnoreLine MEQP2.PHP.ProtectedClassMember.FoundProtected { parent::setUp(); $this->context = $this->createMock(Context::class); $this->registry = $this->createMock(Registry::class); $this->configMock = $this->createMock(ScopeConfigInterface::class); $this->eventManagerMock = $this->createMock(ManagerInterface::class); $this->cacheTypeListMock = $this->getMockBuilder(TypeListInterface::class) ->disableOriginalConstructor() ->getMock(); $this->random = $this->createMock(Random::class); $this->deliveryTerm = $this->objectManager->getObject( DeliveryTerm::class, [ 'mathRandom' => $this->random, ] ); $this->model = $this->objectManager->getObject( TaxOverride::class, [ 'registry' => $this->registry, 'context' => $this->context, 'config' => $this->configMock, 'eventDispatcher' => $this->eventManagerMock, 'cacheTypeList' => $this->cacheTypeListMock, 'deliveryTermConfig' => $this->deliveryTerm, ] ); } /** * Test method @see TaxOverride::_afterLoad * * @param string|bool|array $value * @param array $result * @dataProvider testAfterLoadDataProvider * @return void */ public function testAfterLoad($value, $result) { $this->model->setData('value', $value); $this->model->afterLoad(); $this->assertEquals( $result, $this->model->getValue() ); } /** * Data provider for @see testAfterLoad * * @return array */ public function testAfterLoadDataProvider() { return [ 'invalid bool' => [false, []], 'invalid empty string' => ['', []], 'valid empty array' => [[], []], 'valid with serialized' => [ '{"AR":"DAT"}', [ '' => ['country_id' => 'AR', 'delivery_term' => 'DAT'], ], ], ]; } /** * Test method @see TaxOverride::beforeSave * * @param string|bool|array $value * @param string $result * @dataProvider testBeforeSaveDataProvider * @return void */ public function testBeforeSave($value, $result) { $this->model->setData('value', $value); $this->model->beforeSave(); $this->assertEquals( $result, $this->model->getValue() ); } /** * Data provider for @see testBeforeSave * * @return array */ public function testBeforeSaveDataProvider() { return [ 'invalid bool' => [false, ''], 'invalid empty string' => ['', ''], 'valid empty array' => [[], '[]'], 'valid delivery term' => [ [ 'AF' => 'AD', 'AW' => 'CFR', ], '{"AF":"AD","AW":"CFR"}', ], ]; } }