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