Skip to content

Commit 796cf10

Browse files
committed
MAGETWO-67321: Importing Products with images from external URL
1 parent fa822af commit 796cf10

File tree

1 file changed

+75
-31
lines changed
  • app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator

1 file changed

+75
-31
lines changed

app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/MediaTest.php

Lines changed: 75 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ protected function setUp()
3131
$this->validatorMock = $this->getMockBuilder(Validator::class)
3232
->disableOriginalConstructor()
3333
->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');
3444

3545
$this->objectManagerHelper = new ObjectManagerHelper($this);
3646
$this->media = $this->objectManagerHelper->getObject(
@@ -39,6 +49,7 @@ protected function setUp()
3949
'validator' => $this->validatorMock
4050
]
4151
);
52+
$this->media->init($contextMock);
4253
}
4354

4455
public function testInit()
@@ -50,26 +61,12 @@ public function testInit()
5061
/**
5162
* @param array $data
5263
* @param array $expected
53-
* @param \Closure|null $validatorCallback
5464
* @dataProvider isMediaValidDataProvider
5565
*/
56-
public function testIsValid($data, $expected, \Closure $validatorCallback = null)
66+
public function testIsValid($data, $expected)
5767
{
58-
if ($validatorCallback !== null) {
59-
$validatorCallback($this->validatorMock);
60-
}
61-
62-
$contextMock = $this->getMockBuilder(Product::class)
63-
->disableOriginalConstructor()
64-
->getMock();
65-
$contextMock->expects($this->any())
66-
->method('getMultipleValueSeparator')
67-
->willReturn(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR);
68-
$contextMock->expects($this->any())
69-
->method('retrieveMessageTemplate')
70-
->with(Media::ERROR_INVALID_MEDIA_URL_OR_PATH)
71-
->willReturn('%s');
72-
$this->media->init($contextMock);
68+
$this->validatorMock->expects($this->never())
69+
->method('isValid');
7370

7471
$result = $this->media->isValid($data);
7572
$this->assertEquals($expected['result'], $result);
@@ -91,6 +88,47 @@ public function testIsValidClearMessagesCall()
9188
$media->isValid([]);
9289
}
9390

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+
94132
/**
95133
* @return array
96134
*/
@@ -109,6 +147,15 @@ public function isMediaValidDataProvider()
109147
['_media_image' => 1],
110148
['result' => true,'messages' => []],
111149
],
150+
];
151+
}
152+
153+
/**
154+
* @return array
155+
*/
156+
public function isValidAdditionalImagesPathDataProvider()
157+
{
158+
return [
112159
'additional_images' => [
113160
['additional_images' => 'image1.png,image2.jpg'],
114161
['result' => true, 'messages' => []]
@@ -117,26 +164,23 @@ public function isMediaValidDataProvider()
117164
['additional_images' => 'image1.png|image2.jpg|image3.gif'],
118165
['result' => false, 'messages' => [0 => 'additional_images']]
119166
],
167+
];
168+
}
169+
170+
/**
171+
* @return array
172+
*/
173+
public function isValidAdditionalImagesUrlDataProvider()
174+
{
175+
return [
120176
'additional_images_wrong_domain' => [
121177
['additional_images' => 'https://example/images/some-name.jpg'],
122178
['result' => false, 'messages' => [0 => 'additional_images']],
123-
function ($validatorMock) {
124-
$validatorMock->expects($this->once())
125-
->method('isValid')
126-
->with('https://example/images/some-name.jpg')
127-
->willReturn(false);
128-
}
129179
],
130180
'additional_images_url_multiple_underscores' => [
131181
['additional_images' => 'https://example.com/images/some-name__with___multiple____underscores.jpg'],
132-
['result' => true, 'messages' => []],
133-
function ($validatorMock) {
134-
$validatorMock->expects($this->once())
135-
->method('isValid')
136-
->with('https://example.com/images/some-name__with___multiple____underscores.jpg')
137-
->willReturn(true);
138-
}
139-
],
182+
['result' => true, 'messages' => []]
183+
]
140184
];
141185
}
142186
}

0 commit comments

Comments
 (0)