TaxOverrideTest.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. /**
  3. * @copyright Vertex. All rights reserved. https://www.vertexinc.com/
  4. * @author Mediotype https://www.mediotype.com/
  5. */
  6. namespace Vertex\Tax\Test\Unit\Model\Config\Backend;
  7. use Magento\Framework\App\Config\Value;
  8. use Magento\Framework\Math\Random;
  9. use Magento\Framework\Model\Context;
  10. use Magento\Framework\Registry;
  11. use Magento\Framework\App\Cache\TypeListInterface;
  12. use Magento\Framework\App\Config\ScopeConfigInterface;
  13. use Magento\Framework\Event\ManagerInterface;
  14. use Vertex\Tax\Model\Config\Backend\TaxOverride;
  15. use Vertex\Tax\Model\Config\DeliveryTerm;
  16. use Vertex\Tax\Test\Unit\TestCase;
  17. /**
  18. * Test Class @see TaxOverride
  19. */
  20. class TaxOverrideTest extends TestCase
  21. {
  22. /** @var DeliveryTerm|\PHPUnit_Framework_MockObject_MockObject */
  23. private $deliveryTerm;
  24. /** @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject */
  25. private $configMock;
  26. /** @var TypeListInterface|\PHPUnit_Framework_MockObject_MockObject */
  27. private $cacheTypeListMock;
  28. /** @var Context|\PHPUnit_Framework_MockObject_MockObject */
  29. private $context;
  30. /** @var ManagerInterface|\PHPUnit_Framework_MockObject_MockObject */
  31. private $eventManagerMock;
  32. /** @var Value */
  33. private $model;
  34. /** @var Random|\PHPUnit_Framework_MockObject_MockObject */
  35. private $random;
  36. /** @var Registry|\PHPUnit_Framework_MockObject_MockObject */
  37. private $registry;
  38. /**
  39. * @inheritdoc
  40. */
  41. protected function setUp() // @codingStandardsIgnoreLine MEQP2.PHP.ProtectedClassMember.FoundProtected
  42. {
  43. parent::setUp();
  44. $this->context = $this->createMock(Context::class);
  45. $this->registry = $this->createMock(Registry::class);
  46. $this->configMock = $this->createMock(ScopeConfigInterface::class);
  47. $this->eventManagerMock = $this->createMock(ManagerInterface::class);
  48. $this->cacheTypeListMock = $this->getMockBuilder(TypeListInterface::class)
  49. ->disableOriginalConstructor()
  50. ->getMock();
  51. $this->random = $this->createMock(Random::class);
  52. $this->deliveryTerm = $this->objectManager->getObject(
  53. DeliveryTerm::class,
  54. [
  55. 'mathRandom' => $this->random,
  56. ]
  57. );
  58. $this->model = $this->objectManager->getObject(
  59. TaxOverride::class,
  60. [
  61. 'registry' => $this->registry,
  62. 'context' => $this->context,
  63. 'config' => $this->configMock,
  64. 'eventDispatcher' => $this->eventManagerMock,
  65. 'cacheTypeList' => $this->cacheTypeListMock,
  66. 'deliveryTermConfig' => $this->deliveryTerm,
  67. ]
  68. );
  69. }
  70. /**
  71. * Test method @see TaxOverride::_afterLoad
  72. *
  73. * @param string|bool|array $value
  74. * @param array $result
  75. * @dataProvider testAfterLoadDataProvider
  76. * @return void
  77. */
  78. public function testAfterLoad($value, $result)
  79. {
  80. $this->model->setData('value', $value);
  81. $this->model->afterLoad();
  82. $this->assertEquals(
  83. $result,
  84. $this->model->getValue()
  85. );
  86. }
  87. /**
  88. * Data provider for @see testAfterLoad
  89. *
  90. * @return array
  91. */
  92. public function testAfterLoadDataProvider()
  93. {
  94. return [
  95. 'invalid bool' => [false, []],
  96. 'invalid empty string' => ['', []],
  97. 'valid empty array' => [[], []],
  98. 'valid with serialized' => [
  99. '{"AR":"DAT"}',
  100. [
  101. '' => ['country_id' => 'AR', 'delivery_term' => 'DAT'],
  102. ],
  103. ],
  104. ];
  105. }
  106. /**
  107. * Test method @see TaxOverride::beforeSave
  108. *
  109. * @param string|bool|array $value
  110. * @param string $result
  111. * @dataProvider testBeforeSaveDataProvider
  112. * @return void
  113. */
  114. public function testBeforeSave($value, $result)
  115. {
  116. $this->model->setData('value', $value);
  117. $this->model->beforeSave();
  118. $this->assertEquals(
  119. $result,
  120. $this->model->getValue()
  121. );
  122. }
  123. /**
  124. * Data provider for @see testBeforeSave
  125. *
  126. * @return array
  127. */
  128. public function testBeforeSaveDataProvider()
  129. {
  130. return [
  131. 'invalid bool' => [false, ''],
  132. 'invalid empty string' => ['', ''],
  133. 'valid empty array' => [[], '[]'],
  134. 'valid delivery term' => [
  135. [
  136. 'AF' => 'AD',
  137. 'AW' => 'CFR',
  138. ],
  139. '{"AF":"AD","AW":"CFR"}',
  140. ],
  141. ];
  142. }
  143. }