@@ -49,11 +49,12 @@ public function setUp()
49
49
50
50
/**
51
51
* @param array $result
52
+ * @param string $productSku
53
+ *
52
54
* @return array
53
55
*/
54
- protected function getStockItemBySku ($ result )
56
+ protected function getStockItemBySku ($ result, $ productSku )
55
57
{
56
- $ productSku = 'simple1 ' ;
57
58
$ serviceInfo = [
58
59
'rest ' => [
59
60
'resourcePath ' => self ::RESOURCE_GET_PATH . "/ $ productSku " ,
@@ -69,22 +70,41 @@ protected function getStockItemBySku($result)
69
70
$ apiResult = $ this ->_webApiCall ($ serviceInfo , $ arguments );
70
71
$ result ['item_id ' ] = $ apiResult ['item_id ' ];
71
72
$ this ->assertEquals ($ result , array_intersect_key ($ apiResult , $ result ), 'The stock data does not match. ' );
73
+
72
74
return $ apiResult ;
73
75
}
74
76
75
77
/**
76
78
* @param array $newData
77
79
* @param array $expectedResult
78
80
* @param array $fixtureData
81
+ *
79
82
* @magentoApiDataFixture Magento/Catalog/_files/multiple_products.php
80
83
* @dataProvider saveStockItemBySkuWithWrongInputDataProvider
81
84
*/
82
85
public function testStockItemPUTWithWrongInput ($ newData , $ expectedResult , $ fixtureData )
83
86
{
84
- $ stockItemOld = $ this ->getStockItemBySku ($ fixtureData );
85
87
$ productSku = 'simple1 ' ;
88
+ $ stockItemOld = $ this ->getStockItemBySku ($ fixtureData , $ productSku );
86
89
$ itemId = $ stockItemOld ['item_id ' ];
87
90
91
+ $ actualData = $ this ->updateStockItemBySku ($ productSku , $ itemId , $ newData );
92
+
93
+ $ this ->assertEquals ($ stockItemOld ['item_id ' ], $ actualData );
94
+
95
+ /** @var \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory */
96
+ $ stockItemFactory = $ this ->objectManager
97
+ ->get (\Magento \CatalogInventory \Api \Data \StockItemInterfaceFactory::class);
98
+ $ stockItem = $ stockItemFactory ->create ();
99
+ /** @var \Magento\CatalogInventory\Model\ResourceModel\Stock\Item $stockItemResource */
100
+ $ stockItemResource = $ this ->objectManager ->get (\Magento \CatalogInventory \Model \ResourceModel \Stock \Item::class);
101
+ $ stockItemResource ->loadByProductId ($ stockItem , $ stockItemOld ['product_id ' ], $ stockItemOld ['stock_id ' ]);
102
+ $ expectedResult ['item_id ' ] = $ stockItem ->getItemId ();
103
+ $ this ->assertEquals ($ expectedResult , array_intersect_key ($ stockItem ->getData (), $ expectedResult ));
104
+ }
105
+
106
+ private function updateStockItemBySku ($ productSku , $ itemId , $ newData )
107
+ {
88
108
$ resourcePath = str_replace ([':productSku ' , ':itemId ' ], [$ productSku , $ itemId ], self ::RESOURCE_PUT_PATH );
89
109
90
110
$ serviceInfo = [
@@ -113,7 +133,124 @@ public function testStockItemPUTWithWrongInput($newData, $expectedResult, $fixtu
113
133
$ data = $ stockItemDetailsDo ->getData ();
114
134
$ data ['show_default_notification_message ' ] = false ;
115
135
$ arguments = ['productSku ' => $ productSku , 'stockItem ' => $ data ];
116
- $ this ->assertEquals ($ stockItemOld ['item_id ' ], $ this ->_webApiCall ($ serviceInfo , $ arguments ));
136
+
137
+ return $ this ->_webApiCall ($ serviceInfo , $ arguments );
138
+ }
139
+
140
+ /**
141
+ * @return array
142
+ */
143
+ public function saveStockItemBySkuWithWrongInputDataProvider ()
144
+ {
145
+ return [
146
+ [
147
+ [
148
+ 'item_id ' => 222 ,
149
+ 'product_id ' => 222 ,
150
+ 'stock_id ' => 1 ,
151
+ 'qty ' => '111.0000 ' ,
152
+ 'min_qty ' => '0.0000 ' ,
153
+ 'use_config_min_qty ' => 1 ,
154
+ 'is_qty_decimal ' => 0 ,
155
+ 'backorders ' => 0 ,
156
+ 'use_config_backorders ' => 1 ,
157
+ 'min_sale_qty ' => '1.0000 ' ,
158
+ 'use_config_min_sale_qty ' => 1 ,
159
+ 'max_sale_qty ' => '0.0000 ' ,
160
+ 'use_config_max_sale_qty ' => 1 ,
161
+ 'is_in_stock ' => 1 ,
162
+ 'low_stock_date ' => '' ,
163
+ 'notify_stock_qty ' => null ,
164
+ 'use_config_notify_stock_qty ' => 1 ,
165
+ 'manage_stock ' => 0 ,
166
+ 'use_config_manage_stock ' => 1 ,
167
+ 'stock_status_changed_auto ' => 0 ,
168
+ 'use_config_qty_increments ' => 1 ,
169
+ 'qty_increments ' => '0.0000 ' ,
170
+ 'use_config_enable_qty_inc ' => 1 ,
171
+ 'enable_qty_increments ' => 0 ,
172
+ 'is_decimal_divided ' => 0 ,
173
+ ],
174
+ [
175
+ 'item_id ' => '1 ' ,
176
+ 'product_id ' => '10 ' ,
177
+ 'stock_id ' => '1 ' ,
178
+ 'qty ' => '111.0000 ' ,
179
+ 'min_qty ' => '0.0000 ' ,
180
+ 'use_config_min_qty ' => '1 ' ,
181
+ 'is_qty_decimal ' => '0 ' ,
182
+ 'backorders ' => '0 ' ,
183
+ 'use_config_backorders ' => '1 ' ,
184
+ 'min_sale_qty ' => '1.0000 ' ,
185
+ 'use_config_min_sale_qty ' => '1 ' ,
186
+ 'max_sale_qty ' => '0.0000 ' ,
187
+ 'use_config_max_sale_qty ' => '1 ' ,
188
+ 'is_in_stock ' => '1 ' ,
189
+ 'low_stock_date ' => null ,
190
+ 'notify_stock_qty ' => null ,
191
+ 'use_config_notify_stock_qty ' => '1 ' ,
192
+ 'manage_stock ' => '0 ' ,
193
+ 'use_config_manage_stock ' => '1 ' ,
194
+ 'stock_status_changed_auto ' => '0 ' ,
195
+ 'use_config_qty_increments ' => '1 ' ,
196
+ 'qty_increments ' => '0.0000 ' ,
197
+ 'use_config_enable_qty_inc ' => '1 ' ,
198
+ 'enable_qty_increments ' => '0 ' ,
199
+ 'is_decimal_divided ' => '0 ' ,
200
+ 'type_id ' => 'simple ' ,
201
+ ],
202
+ [
203
+ 'item_id ' => 1 ,
204
+ 'product_id ' => 10 ,
205
+ 'stock_id ' => 1 ,
206
+ 'qty ' => 100 ,
207
+ 'is_in_stock ' => 1 ,
208
+ 'is_qty_decimal ' => '' ,
209
+ 'show_default_notification_message ' => '' ,
210
+ 'use_config_min_qty ' => 1 ,
211
+ 'min_qty ' => 0 ,
212
+ 'use_config_min_sale_qty ' => 1 ,
213
+ 'min_sale_qty ' => 1 ,
214
+ 'use_config_max_sale_qty ' => 1 ,
215
+ 'max_sale_qty ' => 10000 ,
216
+ 'use_config_backorders ' => 1 ,
217
+ 'backorders ' => 0 ,
218
+ 'use_config_notify_stock_qty ' => 1 ,
219
+ 'notify_stock_qty ' => 1 ,
220
+ 'use_config_qty_increments ' => 1 ,
221
+ 'qty_increments ' => 0 ,
222
+ 'use_config_enable_qty_inc ' => 1 ,
223
+ 'enable_qty_increments ' => '' ,
224
+ 'use_config_manage_stock ' => 1 ,
225
+ 'manage_stock ' => 1 ,
226
+ 'low_stock_date ' => '' ,
227
+ 'is_decimal_divided ' => '' ,
228
+ 'stock_status_changed_auto ' => 0 ,
229
+ ],
230
+ ],
231
+ ];
232
+ }
233
+
234
+ /**
235
+ * @param array $newData
236
+ * @param array $expectedResult
237
+ * @param array $fixtureData
238
+ *
239
+ * @magentoApiDataFixture Magento/Catalog/_files/product_simple_sku_with_slash.php
240
+ * @dataProvider testUpdateStockItemBySkuDataProvider
241
+ */
242
+ public function testUpdateStockItemBySku ($ newData , $ expectedResult , $ fixtureData )
243
+ {
244
+ $ productSku = [
245
+ 'rest ' => 'sku%252fwith%252fslashes ' ,
246
+ 'soap ' => 'sku%2fwith%2fslashes '
247
+ ];
248
+ $ stockItemOld = $ this ->getStockItemBySku ($ fixtureData , $ productSku [TESTS_WEB_API_ADAPTER ]);
249
+ $ itemId = $ stockItemOld ['item_id ' ];
250
+
251
+ $ actualData = $ this ->updateStockItemBySku ($ productSku [TESTS_WEB_API_ADAPTER ], $ itemId , $ newData );
252
+
253
+ $ this ->assertEquals ($ stockItemOld ['item_id ' ], $ actualData );
117
254
118
255
/** @var \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory */
119
256
$ stockItemFactory = $ this ->objectManager
@@ -126,10 +263,7 @@ public function testStockItemPUTWithWrongInput($newData, $expectedResult, $fixtu
126
263
$ this ->assertEquals ($ expectedResult , array_intersect_key ($ stockItem ->getData (), $ expectedResult ));
127
264
}
128
265
129
- /**
130
- * @return array
131
- */
132
- public function saveStockItemBySkuWithWrongInputDataProvider ()
266
+ public function testUpdateStockItemBySkuDataProvider ()
133
267
{
134
268
return [
135
269
[
@@ -162,7 +296,7 @@ public function saveStockItemBySkuWithWrongInputDataProvider()
162
296
],
163
297
[
164
298
'item_id ' => '1 ' ,
165
- 'product_id ' => '10 ' ,
299
+ 'product_id ' => '1 ' ,
166
300
'stock_id ' => '1 ' ,
167
301
'qty ' => '111.0000 ' ,
168
302
'min_qty ' => '0.0000 ' ,
@@ -190,7 +324,7 @@ public function saveStockItemBySkuWithWrongInputDataProvider()
190
324
],
191
325
[
192
326
'item_id ' => 1 ,
193
- 'product_id ' => 10 ,
327
+ 'product_id ' => 1 ,
194
328
'stock_id ' => 1 ,
195
329
'qty ' => 100 ,
196
330
'is_in_stock ' => 1 ,
0 commit comments