Passed
Push — master ( e3443a...9a4066 )
by Aimeos
01:47
created

StandardTest::testProcessUpdate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 48
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 24
nc 2
nop 0
dl 0
loc 48
rs 9.536
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2019
6
 */
7
8
9
namespace Aimeos\Controller\Common\Common\Import\Xml\Processor\Lists\Media;
10
11
12
class StandardTest extends \PHPUnit\Framework\TestCase
1 ignored issue
show
Bug introduced by
The type PHPUnit\Framework\TestCase was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
{
14
	private $context;
15
	private $object;
16
17
18
	protected function setUp()
19
	{
20
		$this->context = \TestHelperCntl::getContext();
21
		$this->object = new \Aimeos\Controller\Common\Common\Import\Xml\Processor\Lists\Media\Standard( $this->context );
22
	}
23
24
25
	protected function tearDown()
26
	{
27
		unset( $this->object, $this->context );
28
	}
29
30
31
	public function testProcess()
32
	{
33
		$dom = new \DOMDocument();
34
		$product = \Aimeos\MShop::create( $this->context, 'product' )->createItem();
35
36
		$dom->loadXML( '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
37
<media>
38
	<mediaitem lists.type="default">
39
		<media.type><![CDATA[test]]></media.type>
40
		<media.languageid><![CDATA[de]]></media.languageid>
41
		<media.url><![CDATA[path/to/file.jpg]]></media.url>
42
	</mediaitem>
43
	<mediaitem lists.type="test">
44
		<media.type><![CDATA[default]]></media.type>
45
		<media.languageid><![CDATA[]]></media.languageid>
46
		<media.url><![CDATA[path/to/file2.jpg]]></media.url>
47
	</mediaitem>
48
</media>' );
49
50
		$product = $this->object->process( $product, $dom->firstChild );
51
52
		$pos = 0;
53
		$expected = [
54
			['default', 'test', 'de', 'path/to/file.jpg'],
55
			['test', 'default', '', 'path/to/file2.jpg'],
56
		];
57
58
		$listItems = $product->getListItems( 'media' );
59
		$this->assertEquals( 2, count( $listItems ) );
60
61
		foreach( $listItems as $listItem )
62
		{
63
			$this->assertEquals( $expected[$pos][0], $listItem->getType() );
64
			$this->assertEquals( $expected[$pos][1], $listItem->getRefItem()->getType() );
65
			$this->assertEquals( $expected[$pos][2], $listItem->getRefItem()->getLanguageId() );
66
			$this->assertEquals( $expected[$pos][3], $listItem->getRefItem()->getUrl() );
67
			$pos++;
68
		}
69
	}
70
71
72
	public function testProcessUpdate()
73
	{
74
		$dom = new \DOMDocument();
75
		$manager = \Aimeos\MShop::create( $this->context, 'media' );
76
		$listManager = \Aimeos\MShop::create( $this->context, 'product/lists' );
77
		$product = \Aimeos\MShop::create( $this->context, 'product' )->createItem();
78
79
		$product->addListItem( 'media',
80
			$listManager->createItem()->setType( 'default' )->setId( 1 ),
81
			$manager->createItem()->setType( 'test' )->setLanguageId( 'de' )->setUrl( 'path/to/file.jpg' )
82
		);
83
		$product->addListItem( 'media',
84
			$listManager->createItem()->setType( 'test' )->setId( 2 ),
85
			$manager->createItem()->setType( 'default' )->setLanguageId( '' )->setUrl( 'path/to/file2.jpg' )
86
		);
87
88
		$dom->loadXML( '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
89
<media>
90
	<mediaitem lists.type="test">
91
		<media.type><![CDATA[default]]></media.type>
92
		<media.languageid><![CDATA[]]></media.languageid>
93
		<media.url><![CDATA[path/to/file2.jpg]]></media.url>
94
	</mediaitem>
95
	<mediaitem lists.type="default">
96
		<media.type><![CDATA[test]]></media.type>
97
		<media.languageid><![CDATA[de]]></media.languageid>
98
		<media.url><![CDATA[path/to/file.jpg]]></media.url>
99
	</mediaitem>
100
</media>' );
101
102
		$product = $this->object->process( $product, $dom->firstChild );
103
104
		$pos = 0;
105
		$expected = [
106
			['test', 'default', '', 'path/to/file2.jpg'],
107
			['default', 'test', 'de', 'path/to/file.jpg'],
108
		];
109
110
		$listItems = $product->getListItems();
111
		$this->assertEquals( 2, count( $listItems ) );
112
113
		foreach( $listItems as $listItem )
114
		{
115
			$this->assertEquals( $expected[$pos][0], $listItem->getType() );
116
			$this->assertEquals( $expected[$pos][1], $listItem->getRefItem()->getType() );
117
			$this->assertEquals( $expected[$pos][2], $listItem->getRefItem()->getLanguageId() );
118
			$this->assertEquals( $expected[$pos][3], $listItem->getRefItem()->getUrl() );
119
			$pos++;
120
		}
121
	}
122
123
124
	public function testProcessDelete()
125
	{
126
		$dom = new \DOMDocument();
127
		$manager = \Aimeos\MShop::create( $this->context, 'media' );
128
		$listManager = \Aimeos\MShop::create( $this->context, 'product/lists' );
129
		$product = \Aimeos\MShop::create( $this->context, 'product' )->createItem();
130
131
		$product->addListItem( 'media',
132
			$listManager->createItem()->setType( 'default' )->setId( 1 ),
133
			$manager->createItem()->setType( 'test' )->setLanguageId( 'de' )->setUrl( 'path/to/file.jpg' )
134
		);
135
		$product->addListItem( 'media',
136
			$listManager->createItem()->setType( 'test' )->setId( 2 ),
137
			$manager->createItem()->setType( 'default' )->setLanguageId( '' )->setUrl( 'path/to/file2.jpg' )
138
		);
139
140
		$dom->loadXML( '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
141
<media>
142
	<mediaitem lists.type="test">
143
		<media.type><![CDATA[default]]></media.type>
144
		<media.languageid><![CDATA[]]></media.languageid>
145
		<media.url><![CDATA[path/to/file2.jpg]]></media.url>
146
	</mediaitem>
147
</media>' );
148
149
		$product = $this->object->process( $product, $dom->firstChild );
150
151
		$pos = 0;
152
		$expected = [['test', 'default', '', 'path/to/file2.jpg']];
153
154
		$listItems = $product->getListItems();
155
		$this->assertEquals( 1, count( $listItems ) );
156
157
		foreach( $listItems as $listItem )
158
		{
159
			$this->assertEquals( $expected[$pos][0], $listItem->getType() );
160
			$this->assertEquals( $expected[$pos][1], $listItem->getRefItem()->getType() );
161
			$this->assertEquals( $expected[$pos][2], $listItem->getRefItem()->getLanguageId() );
162
			$this->assertEquals( $expected[$pos][3], $listItem->getRefItem()->getUrl() );
163
			$pos++;
164
		}
165
	}
166
}
167