10
10
use Magento \CatalogImportExport \Model \Import \Product \Validator \Media ;
11
11
use Magento \Framework \TestFramework \Unit \Helper \ObjectManager as ObjectManagerHelper ;
12
12
use Magento \ImportExport \Model \Import ;
13
+ use Magento \Framework \Url \Validator ;
14
+ use PHPUnit_Framework_MockObject_MockObject as MockObject ;
13
15
14
16
class MediaTest extends \PHPUnit_Framework_TestCase
15
17
{
@@ -19,16 +21,35 @@ class MediaTest extends \PHPUnit_Framework_TestCase
19
21
/** @var ObjectManagerHelper */
20
22
protected $ objectManagerHelper ;
21
23
24
+ /**
25
+ * @var Validator|MockObject
26
+ */
27
+ private $ validatorMock ;
28
+
22
29
protected function setUp ()
23
30
{
24
-
31
+ $ this ->validatorMock = $ this ->getMockBuilder (Validator::class)
32
+ ->disableOriginalConstructor ()
33
+ ->getMock ();
34
+ $ contextMock = $ this ->getMockBuilder (Product::class)
35
+ ->disableOriginalConstructor ()
36
+ ->getMock ();
37
+ $ contextMock ->expects ($ this ->any ())
38
+ ->method ('getMultipleValueSeparator ' )
39
+ ->willReturn (Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR );
40
+ $ contextMock ->expects ($ this ->any ())
41
+ ->method ('retrieveMessageTemplate ' )
42
+ ->with (Media::ERROR_INVALID_MEDIA_URL_OR_PATH )
43
+ ->willReturn ('%s ' );
44
+
25
45
$ this ->objectManagerHelper = new ObjectManagerHelper ($ this );
26
46
$ this ->media = $ this ->objectManagerHelper ->getObject (
27
47
Media::class,
28
48
[
29
-
49
+ ' validator ' => $ this -> validatorMock
30
50
]
31
51
);
52
+ $ this ->media ->init ($ contextMock );
32
53
}
33
54
34
55
public function testInit ()
@@ -44,17 +65,8 @@ public function testInit()
44
65
*/
45
66
public function testIsValid ($ data , $ expected )
46
67
{
47
- $ contextMock = $ this ->getMockBuilder (Product::class)
48
- ->disableOriginalConstructor ()
49
- ->getMock ();
50
- $ contextMock ->expects ($ this ->any ())
51
- ->method ('getMultipleValueSeparator ' )
52
- ->willReturn (Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR );
53
- $ contextMock ->expects ($ this ->any ())
54
- ->method ('retrieveMessageTemplate ' )
55
- ->with (Media::ERROR_INVALID_MEDIA_URL_OR_PATH )
56
- ->willReturn ('%s ' );
57
- $ this ->media ->init ($ contextMock );
68
+ $ this ->validatorMock ->expects ($ this ->never ())
69
+ ->method ('isValid ' );
58
70
59
71
$ result = $ this ->media ->isValid ($ data );
60
72
$ this ->assertEquals ($ expected ['result ' ], $ result );
@@ -76,6 +88,47 @@ public function testIsValidClearMessagesCall()
76
88
$ media ->isValid ([]);
77
89
}
78
90
91
+ /**
92
+ * @param array $data
93
+ * @param array $expected
94
+ * @dataProvider isValidAdditionalImagesPathDataProvider
95
+ */
96
+ public function testIsValidAdditionalImagesPath ($ data , $ expected )
97
+ {
98
+ if ($ expected ['result ' ]) {
99
+ $ this ->validatorMock ->expects ($ this ->never ())
100
+ ->method ('isValid ' );
101
+ } else {
102
+ $ this ->validatorMock ->expects ($ this ->once ())
103
+ ->method ('isValid ' )
104
+ ->with ($ data ['additional_images ' ])
105
+ ->willReturn (false );
106
+ }
107
+
108
+ $ result = $ this ->media ->isValid ($ data );
109
+ $ this ->assertEquals ($ expected ['result ' ], $ result );
110
+ $ messages = $ this ->media ->getMessages ();
111
+ $ this ->assertEquals ($ expected ['messages ' ], $ messages );
112
+ }
113
+
114
+ /**
115
+ * @param array $data
116
+ * @param array $expected
117
+ * @dataProvider isValidAdditionalImagesUrlDataProvider
118
+ */
119
+ public function testIsValidAdditionalImagesUrl ($ data , $ expected )
120
+ {
121
+ $ this ->validatorMock ->expects ($ this ->once ())
122
+ ->method ('isValid ' )
123
+ ->with ($ data ['additional_images ' ])
124
+ ->willReturn ($ expected ['result ' ]);
125
+
126
+ $ result = $ this ->media ->isValid ($ data );
127
+ $ this ->assertEquals ($ expected ['result ' ], $ result );
128
+ $ messages = $ this ->media ->getMessages ();
129
+ $ this ->assertEquals ($ expected ['messages ' ], $ messages );
130
+ }
131
+
79
132
/**
80
133
* @return array
81
134
*/
@@ -94,13 +147,39 @@ public function isMediaValidDataProvider()
94
147
['_media_image ' => 1 ],
95
148
['result ' => true ,'messages ' => []],
96
149
],
150
+ ];
151
+ }
152
+
153
+ /**
154
+ * @return array
155
+ */
156
+ public function isValidAdditionalImagesPathDataProvider ()
157
+ {
158
+ return [
97
159
'additional_images ' => [
98
160
['additional_images ' => 'image1.png,image2.jpg ' ],
99
161
['result ' => true , 'messages ' => []]
100
162
],
101
163
'additional_images_fail ' => [
102
164
['additional_images ' => 'image1.png|image2.jpg|image3.gif ' ],
103
165
['result ' => false , 'messages ' => [0 => 'additional_images ' ]]
166
+ ],
167
+ ];
168
+ }
169
+
170
+ /**
171
+ * @return array
172
+ */
173
+ public function isValidAdditionalImagesUrlDataProvider ()
174
+ {
175
+ return [
176
+ 'additional_images_wrong_domain ' => [
177
+ ['additional_images ' => 'https://example/images/some-name.jpg ' ],
178
+ ['result ' => false , 'messages ' => [0 => 'additional_images ' ]],
179
+ ],
180
+ 'additional_images_url_multiple_underscores ' => [
181
+ ['additional_images ' => 'https://example.com/images/some-name__with___multiple____underscores.jpg ' ],
182
+ ['result ' => true , 'messages ' => []]
104
183
]
105
184
];
106
185
}
0 commit comments