StandardTest   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 215
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 127
c 1
b 0
f 0
dl 0
loc 215
rs 10
wmc 9

8 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 7 1
A tearDown() 0 3 1
A testProcess() 0 37 1
A testProcessEmpty() 0 28 1
A testProcessMultiple() 0 48 2
A create() 0 3 1
A testProcessDelete() 0 23 1
A testProcessUpdate() 0 35 1
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2015-2025
6
 */
7
8
9
namespace Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address;
10
11
12
class StandardTest extends \PHPUnit\Framework\TestCase
13
{
14
	private $context;
15
	private $endpoint;
16
	private $manager;
17
18
19
	protected function setUp() : void
20
	{
21
		\Aimeos\MShop::cache( true );
22
23
		$this->context = \TestHelper::context();
24
		$this->manager = \Aimeos\MShop::create( $this->context, 'supplier' );
25
		$this->endpoint = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Done( $this->context, [] );
26
	}
27
28
29
	protected function tearDown() : void
30
	{
31
		\Aimeos\MShop::cache( false );
32
	}
33
34
35
	public function testProcess()
36
	{
37
		$mapping = array(
38
			0 => 'supplier.address.languageid',
39
			1 => 'supplier.address.countryid',
40
			2 => 'supplier.address.city',
41
			3 => 'supplier.address.firstname',
42
			4 => 'supplier.address.lastname',
43
			5 => 'supplier.address.email',
44
		);
45
46
		$data = array(
47
			0 => 'de',
48
			1 => 'de',
49
			2 => 'Berlin',
50
			3 => 'John',
51
			4 => 'Dummy',
52
			5 => '[email protected]',
53
		);
54
55
		$supplier = $this->create( 'job_csv_test' );
56
57
		$object = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address\Standard( $this->context, $mapping, $this->endpoint );
58
		$object->process( $supplier, $data );
59
60
		$addressItems = $supplier->getAddressItems();
61
		$address = $addressItems->first();
62
63
		$this->assertInstanceOf( '\\Aimeos\\MShop\\Supplier\\Item\\Address\\Iface', $address );
64
		$this->assertEquals( 1, count( $addressItems ) );
65
66
		$this->assertEquals( 'de', $address->getLanguageid() );
67
		$this->assertEquals( 'DE', $address->getCountryid() );
68
		$this->assertEquals( 'Berlin', $address->getCity() );
69
		$this->assertEquals( 'John', $address->getFirstname() );
70
		$this->assertEquals( 'Dummy', $address->getLastname() );
71
		$this->assertEquals( '[email protected]', $address->getEmail() );
72
	}
73
74
75
	public function testProcessMultiple()
76
	{
77
		$mapping = array(
78
			0 => 'supplier.address.languageid',
79
			1 => 'supplier.address.countryid',
80
			2 => 'supplier.address.city',
81
			3 => 'supplier.address.languageid',
82
			4 => 'supplier.address.countryid',
83
			5 => 'supplier.address.city',
84
			6 => 'supplier.address.languageid',
85
			7 => 'supplier.address.countryid',
86
			8 => 'supplier.address.city',
87
		);
88
89
		$data = array(
90
			0 => 'de',
91
			1 => 'DE',
92
			2 => 'Berlin',
93
			3 => 'en',
94
			4 => 'US',
95
			5 => 'Washington',
96
			6 => 'fr',
97
			7 => 'FR',
98
			8 => 'Paris',
99
		);
100
101
		$supplier = $this->create( 'job_csv_test' );
102
103
		$object = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address\Standard( $this->context, $mapping, $this->endpoint );
104
		$object->process( $supplier, $data );
105
106
107
		$pos = 0;
108
		$addrItems = $supplier->getAddressItems();
109
		$expected = array(
110
			0 => array( 'de', 'DE', 'Berlin' ),
111
			1 => array( 'en', 'US', 'Washington' ),
112
			2 => array( 'fr', 'FR', 'Paris' ),
113
		);
114
115
		$this->assertEquals( 3, count( $addrItems ) );
116
117
		foreach( $addrItems as $addrItem )
118
		{
119
			$this->assertEquals( $expected[$pos][0], $addrItem->getLanguageId() );
120
			$this->assertEquals( $expected[$pos][1], $addrItem->getCountryId() );
121
			$this->assertEquals( $expected[$pos][2], $addrItem->getCity() );
122
			$pos++;
123
		}
124
	}
125
126
127
	public function testProcessUpdate()
128
	{
129
		$mapping = array(
130
			0 => 'supplier.address.languageid',
131
			1 => 'supplier.address.countryid',
132
			2 => 'supplier.address.city',
133
		);
134
135
		$data = array(
136
			0 => 'de',
137
			1 => 'de',
138
			2 => 'Berlin',
139
		);
140
141
		$dataUpdate = array(
142
			0 => 'ru',
143
			1 => 'ru',
144
			2 => 'Moscow',
145
		);
146
147
		$supplier = $this->create( 'job_csv_test' );
148
149
		$object = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address\Standard( $this->context, $mapping, $this->endpoint );
150
		$object->process( $supplier, $data );
151
		$object->process( $supplier, $dataUpdate );
152
153
		$addressItems = $supplier->getAddressItems();
154
		$address = $addressItems->first();
155
156
		$this->assertEquals( 1, count( $addressItems ) );
157
		$this->assertInstanceOf( '\\Aimeos\\MShop\\Supplier\\Item\\Address\\Iface', $address );
158
159
		$this->assertEquals( 'ru', $address->getLanguageid() );
160
		$this->assertEquals( 'RU', $address->getCountryid() );
161
		$this->assertEquals( 'Moscow', $address->getCity() );
162
	}
163
164
	public function testProcessDelete()
165
	{
166
		$mapping = array(
167
			0 => 'address.type',
168
			1 => 'address.content',
169
		);
170
171
		$data = array(
172
			0 => 'name',
173
			1 => 'Job CSV test',
174
		);
175
176
		$supplier = $this->create( 'job_csv_test' );
177
178
		$object = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address\Standard( $this->context, $mapping, $this->endpoint );
179
		$object->process( $supplier, $data );
180
181
		$object = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address\Standard( $this->context, [], $this->endpoint );
182
		$object->process( $supplier, [] );
183
184
185
		$listItems = $supplier->getListItems();
186
		$this->assertEquals( 0, count( $listItems ) );
187
	}
188
189
190
	public function testProcessEmpty()
191
	{
192
		$mapping = array(
193
			0 => 'supplier.address.languageid',
194
			1 => 'supplier.address.countryid',
195
			2 => 'supplier.address.city',
196
			3 => 'supplier.address.languageid',
197
			4 => 'supplier.address.countryid',
198
			5 => 'supplier.address.city',
199
		);
200
201
		$data = array(
202
			0 => 'de',
203
			1 => 'de',
204
			2 => 'Berlin',
205
			3 => '',
206
			4 => '',
207
			5 => '',
208
		);
209
210
		$supplier = $this->create( 'job_csv_test' );
211
212
		$object = new \Aimeos\Controller\Jobs\Common\Supplier\Import\Csv\Processor\Address\Standard( $this->context, $mapping, $this->endpoint );
213
		$object->process( $supplier, $data );
214
215
		$listItems = $supplier->getAddressItems();
216
217
		$this->assertEquals( 1, count( $listItems ) );
218
	}
219
220
221
	/**
222
	 * @param string $code
223
	 */
224
	protected function create( $code )
225
	{
226
		return $this->manager->create()->setCode( $code );
227
	}
228
}
229