@@ -18,6 +18,10 @@ class CreateHandlerTest extends \PHPUnit_Framework_TestCase
18
18
*/
19
19
protected $ createHandler ;
20
20
21
+ private $ fileName = '/m/a/magento_image.jpg ' ;
22
+
23
+ private $ fileLabel = 'Magento image ' ;
24
+
21
25
protected function setUp ()
22
26
{
23
27
$ this ->createHandler = \Magento \TestFramework \Helper \Bootstrap::getObjectManager ()->create (
@@ -28,31 +32,98 @@ protected function setUp()
28
32
/**
29
33
* @covers \Magento\Catalog\Model\Product\Gallery\CreateHandler::execute
30
34
*/
31
- public function testExecute ()
35
+ public function testExecuteWithImageDuplicate ()
32
36
{
33
- $ fileName = '/m/a/magento_image.jpg ' ;
34
- $ fileLabel = 'Magento image ' ;
35
37
/** @var $product \Magento\Catalog\Model\Product */
36
38
$ product = \Magento \TestFramework \Helper \Bootstrap::getObjectManager ()->create (
37
39
\Magento \Catalog \Model \Product::class
38
40
);
39
41
$ product ->load (1 );
40
42
$ product ->setData (
41
43
'media_gallery ' ,
42
- ['images ' => ['image ' => ['file ' => $ fileName , 'label ' => $ fileLabel ]]]
44
+ ['images ' => ['image ' => ['file ' => $ this -> fileName , 'label ' => $ this -> fileLabel ]]]
43
45
);
44
- $ product ->setData ('image ' , $ fileName );
46
+ $ product ->setData ('image ' , $ this -> fileName );
45
47
$ this ->createHandler ->execute ($ product );
46
48
$ this ->assertStringStartsWith ('/m/a/magento_image ' , $ product ->getData ('media_gallery/images/image/new_file ' ));
47
- $ this ->assertEquals ($ fileLabel , $ product ->getData ('image_label ' ));
49
+ $ this ->assertEquals ($ this -> fileLabel , $ product ->getData ('image_label ' ));
48
50
49
51
$ product ->setIsDuplicate (true );
50
52
$ product ->setData (
51
53
'media_gallery ' ,
52
- ['images ' => ['image ' => ['value_id ' => '100 ' , 'file ' => $ fileName , 'label ' => $ fileLabel ]]]
54
+ ['images ' => ['image ' => ['value_id ' => '100 ' , 'file ' => $ this -> fileName , 'label ' => $ this -> fileLabel ]]]
53
55
);
54
56
$ this ->createHandler ->execute ($ product );
55
57
$ this ->assertStringStartsWith ('/m/a/magento_image ' , $ product ->getData ('media_gallery/duplicate/100 ' ));
56
- $ this ->assertEquals ($ fileLabel , $ product ->getData ('image_label ' ));
58
+ $ this ->assertEquals ($ this ->fileLabel , $ product ->getData ('image_label ' ));
59
+ }
60
+
61
+ /**
62
+ * @covers \Magento\Catalog\Model\Product\Gallery\CreateHandler::execute
63
+ * @dataProvider executeDataProvider
64
+ * @param array $expectedValues
65
+ */
66
+ public function testExecuteWithImageRoles ($ expectedValues )
67
+ {
68
+ /** @var $product \Magento\Catalog\Model\Product */
69
+ $ product = \Magento \TestFramework \Helper \Bootstrap::getObjectManager ()->create (
70
+ \Magento \Catalog \Model \Product::class
71
+ );
72
+ $ product ->load (1 );
73
+ $ product ->setData (
74
+ 'media_gallery ' ,
75
+ ['images ' => ['image ' => ['file ' => $ this ->fileName , 'label ' => '' ]]]
76
+ );
77
+ foreach ($ expectedValues as $ mediaAttribute => $ value ) {
78
+ if ($ value ) {
79
+ $ product ->setData ($ mediaAttribute , $ value );
80
+ }
81
+ }
82
+ $ this ->createHandler ->execute ($ product );
83
+ $ this ->assertStringStartsWith ('/m/a/magento_image ' , $ product ->getData ('media_gallery/images/image/new_file ' ));
84
+ $ resource = $ product ->getResource ();
85
+ $ attributeValues = [];
86
+ foreach (array_keys ($ expectedValues ) as $ mediaAttribute ) {
87
+ $ attributeValues [$ mediaAttribute ] = $ resource ->getAttributeRawValue (
88
+ $ product ->getId (),
89
+ $ resource ->getAttribute ($ mediaAttribute ),
90
+ $ product ->getStoreId ()
91
+ );
92
+ }
93
+ $ this ->assertStringStartsWith ('/m/a/magento_image ' , $ product ->getData ('media_gallery/images/image/new_file ' ));
94
+ $ this ->assertEquals ($ expectedValues , $ attributeValues );
95
+ }
96
+
97
+ /**
98
+ * @return array
99
+ */
100
+ public function executeDataProvider ()
101
+ {
102
+ return [
103
+ [
104
+ [
105
+ 'image ' => $ this ->fileName ,
106
+ 'small_image ' => $ this ->fileName ,
107
+ 'swatch_image ' => $ this ->fileName ,
108
+ 'thumbnail ' => $ this ->fileName
109
+ ]
110
+ ],
111
+ [
112
+ [
113
+ 'image ' => 'no_selection ' ,
114
+ 'small_image ' => 'no_selection ' ,
115
+ 'swatch_image ' => 'no_selection ' ,
116
+ 'thumbnail ' => 'no_selection '
117
+ ]
118
+ ],
119
+ [
120
+ [
121
+ 'image ' => null ,
122
+ 'small_image ' => null ,
123
+ 'swatch_image ' => null ,
124
+ 'thumbnail ' => null
125
+ ]
126
+ ]
127
+ ];
57
128
}
58
129
}
0 commit comments