@@ -262,7 +262,7 @@ public function testAddMultipleProductsToEmptyCart(): void
262
262
$ response = $ this ->graphQlMutation ($ query );
263
263
$ result = $ response ['addProductsToCart ' ];
264
264
self ::assertEmpty ($ result ['user_errors ' ]);
265
- self ::assertNotEmpty ( $ result ['cart ' ]['items ' ]);
265
+ self ::assertCount ( 2 , $ result ['cart ' ]['items ' ]);
266
266
267
267
$ cartItem = $ result ['cart ' ]['items ' ][0 ];
268
268
self ::assertEquals ($ product1 ->getSku (), $ cartItem ['product ' ]['sku ' ]);
@@ -280,6 +280,104 @@ public function testAddMultipleProductsToEmptyCart(): void
280
280
self ::assertEquals (50 , $ cartTotals ['grand_total ' ]['value ' ]);
281
281
}
282
282
283
+ /**
284
+ * @magentoApiDataFixture Magento\Catalog\Test\Fixture\Product as:product1
285
+ * @magentoApiDataFixture Magento\Catalog\Test\Fixture\Product as:product2
286
+ * @magentoApiDataFixture Magento\Catalog\Test\Fixture\Product as:product3
287
+ * @magentoApiDataFixture Magento\Quote\Test\Fixture\GuestCart as:cart
288
+ * @magentoApiDataFixture Magento\Quote\Test\Fixture\AddProductToCart as:cartItem1
289
+ * @magentoApiDataFixture Magento\Quote\Test\Fixture\AddProductToCart as:cartItem2
290
+ * @magentoDataFixtureDataProvider {"cartItem1":{"cart_id":"$cart.id$","product_id":"$product1.id$","qty":1}}
291
+ * @magentoDataFixtureDataProvider {"cartItem2":{"cart_id":"$cart.id$","product_id":"$product2.id$","qty":1}}
292
+ */
293
+ public function testAddMultipleProductsToNotEmptyCart (): void
294
+ {
295
+ $ product1 = $ this ->fixtures ->get ('product1 ' );
296
+ $ product2 = $ this ->fixtures ->get ('product2 ' );
297
+ $ product3 = $ this ->fixtures ->get ('product3 ' );
298
+ $ cart = $ this ->fixtures ->get ('cart ' );
299
+ $ maskedQuoteId = $ this ->quoteIdToMaskedQuoteIdInterface ->execute ((int ) $ cart ->getId ());
300
+ $ query = $ this ->getAddMultipleProductsToCartAndReturnCartTotalsMutation (
301
+ $ maskedQuoteId ,
302
+ [
303
+ [
304
+ 'sku ' => $ product1 ->getSku (),
305
+ 'quantity ' => 1
306
+ ],
307
+ [
308
+ 'sku ' => $ product3 ->getSku (),
309
+ 'quantity ' => 1
310
+ ]
311
+ ]
312
+ );
313
+ $ response = $ this ->graphQlMutation ($ query );
314
+ $ result = $ response ['addProductsToCart ' ];
315
+ self ::assertEmpty ($ result ['user_errors ' ]);
316
+ self ::assertCount (3 , $ result ['cart ' ]['items ' ]);
317
+
318
+ $ cartItem = $ result ['cart ' ]['items ' ][0 ];
319
+ self ::assertEquals ($ product2 ->getSku (), $ cartItem ['product ' ]['sku ' ]);
320
+ self ::assertEquals (1 , $ cartItem ['quantity ' ]);
321
+ self ::assertEquals (10 , $ cartItem ['prices ' ]['price ' ]['value ' ]);
322
+ self ::assertEquals (10 , $ cartItem ['prices ' ]['row_total ' ]['value ' ]);
323
+
324
+ $ cartItem = $ result ['cart ' ]['items ' ][1 ];
325
+ self ::assertEquals ($ product1 ->getSku (), $ cartItem ['product ' ]['sku ' ]);
326
+ self ::assertEquals (2 , $ cartItem ['quantity ' ]);
327
+ self ::assertEquals (10 , $ cartItem ['prices ' ]['price ' ]['value ' ]);
328
+ self ::assertEquals (20 , $ cartItem ['prices ' ]['row_total ' ]['value ' ]);
329
+
330
+ $ cartItem = $ result ['cart ' ]['items ' ][2 ];
331
+ self ::assertEquals ($ product3 ->getSku (), $ cartItem ['product ' ]['sku ' ]);
332
+ self ::assertEquals (1 , $ cartItem ['quantity ' ]);
333
+ self ::assertEquals (10 , $ cartItem ['prices ' ]['price ' ]['value ' ]);
334
+ self ::assertEquals (10 , $ cartItem ['prices ' ]['row_total ' ]['value ' ]);
335
+
336
+ $ cartTotals = $ result ['cart ' ]['prices ' ];
337
+ self ::assertEquals (40 , $ cartTotals ['grand_total ' ]['value ' ]);
338
+ }
339
+
340
+ /**
341
+ * @magentoApiDataFixture Magento\Catalog\Test\Fixture\Product with:{"stock_item":{"qty": 1}} as:product1
342
+ * @magentoApiDataFixture Magento\Catalog\Test\Fixture\Product as:product2
343
+ * @magentoApiDataFixture Magento\Quote\Test\Fixture\GuestCart as:cart
344
+ */
345
+ public function testAddMultipleProductsWithInsufficientStockToEmptyCart (): void
346
+ {
347
+ $ product1 = $ this ->fixtures ->get ('product1 ' );
348
+ $ product2 = $ this ->fixtures ->get ('product2 ' );
349
+ $ cart = $ this ->fixtures ->get ('cart ' );
350
+ $ maskedQuoteId = $ this ->quoteIdToMaskedQuoteIdInterface ->execute ((int ) $ cart ->getId ());
351
+ $ query = $ this ->getAddMultipleProductsToCartAndReturnCartTotalsMutation (
352
+ $ maskedQuoteId ,
353
+ [
354
+ [
355
+ 'sku ' => $ product1 ->getSku (),
356
+ 'quantity ' => 2
357
+ ],
358
+ [
359
+ 'sku ' => $ product2 ->getSku (),
360
+ 'quantity ' => 3
361
+ ]
362
+ ]
363
+ );
364
+ $ response = $ this ->graphQlMutation ($ query );
365
+ $ result = $ response ['addProductsToCart ' ];
366
+ self ::assertCount (1 , $ result ['user_errors ' ]);
367
+ self ::assertEquals ('INSUFFICIENT_STOCK ' , $ result ['user_errors ' ][0 ]['code ' ]);
368
+
369
+ self ::assertCount (1 , $ result ['cart ' ]['items ' ]);
370
+
371
+ $ cartItem = $ result ['cart ' ]['items ' ][0 ];
372
+ self ::assertEquals ($ product2 ->getSku (), $ cartItem ['product ' ]['sku ' ]);
373
+ self ::assertEquals (3 , $ cartItem ['quantity ' ]);
374
+ self ::assertEquals (10 , $ cartItem ['prices ' ]['price ' ]['value ' ]);
375
+ self ::assertEquals (30 , $ cartItem ['prices ' ]['row_total ' ]['value ' ]);
376
+
377
+ $ cartTotals = $ result ['cart ' ]['prices ' ];
378
+ self ::assertEquals (30 , $ cartTotals ['grand_total ' ]['value ' ]);
379
+ }
380
+
283
381
/**
284
382
* @return array
285
383
*/
0 commit comments