DeliveryTermTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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;
  7. use PHPUnit\Framework\MockObject\MockObject;
  8. use Vertex\Tax\Model\Config\DeliveryTerm;
  9. use Vertex\Tax\Test\Unit\TestCase;
  10. use Magento\Framework\Math\Random;
  11. use Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray;
  12. /**
  13. * Test Class @see DeliveryTerm
  14. */
  15. class DeliveryTermTest extends TestCase
  16. {
  17. /** @var DeliveryTerm */
  18. private $deliveryTerm;
  19. /** @var MockObject */
  20. private $randomMathMock;
  21. /**
  22. * @inheritdoc
  23. */
  24. protected function setUp() // @codingStandardsIgnoreLine MEQP2.PHP.ProtectedClassMember.FoundProtected
  25. {
  26. parent::setUp();
  27. $this->randomMathMock = $this->createMock(Random::class);
  28. $this->deliveryTerm = $this->getObject(
  29. DeliveryTerm::class,
  30. [
  31. 'mathRandom' => $this->randomMathMock,
  32. ]
  33. );
  34. }
  35. /**
  36. * Data Provider for test @see testMakeArrayFieldValue
  37. *
  38. * @return array
  39. */
  40. public function makeArrayFieldValueDataProvider()
  41. {
  42. return [
  43. 'invalid bool' => [false, []],
  44. 'invalid empty string' => ['', []],
  45. 'valid empty array' => [[], []],
  46. 'valid with serialized' => [
  47. '{"USA":"DAT"}',
  48. [
  49. '' => ['country_id' => 'USA', 'delivery_term' => 'DAT'],
  50. ],
  51. ],
  52. ];
  53. }
  54. /**
  55. * Data Provider for test @see testMakeStorableArrayFieldValue
  56. *
  57. * @return array
  58. */
  59. public function makeStorableArrayFieldValueDataProvider()
  60. {
  61. return [
  62. 'invalid bool' => [false, ''],
  63. 'invalid empty string' => ['', ''],
  64. 'valid empty array' => [[], '[]'],
  65. 'valid delivery term' => [
  66. [
  67. 'DZA' => 'AD',
  68. 'USA' => 'CFR',
  69. ],
  70. '{"DZA":"AD","USA":"CFR"}',
  71. ],
  72. ];
  73. }
  74. /**
  75. * Test if value is readable by @see AbstractFieldArray
  76. *
  77. * @param string|array $value
  78. * @param array $result
  79. * @dataProvider makeArrayFieldValueDataProvider
  80. * @return void
  81. */
  82. public function testMakeArrayFieldValue($value, $result)
  83. {
  84. $this->assertSame($result, $this->deliveryTerm->makeArrayFieldValue($value));
  85. }
  86. /**
  87. * Test value to make ready for store
  88. *
  89. * @param string|array $value
  90. * @param string $result
  91. * @dataProvider makeStorableArrayFieldValueDataProvider
  92. * @return void
  93. */
  94. public function testMakeStorableArrayFieldValue($value, $result)
  95. {
  96. $this->assertSame($result, $this->deliveryTerm->makeStorableArrayFieldValue($value));
  97. }
  98. }