47 $this->sessionMock = $this->getMockBuilder(\
Magento\Customer\Model\Session::class)
48 ->disableOriginalConstructor()
50 $this->quantityProcessorMock = $this->getMockBuilder(\
Magento\
Wishlist\Model\LocaleQuantityProcessor::class)
51 ->disableOriginalConstructor()
53 $this->cartMock = $this->getMockBuilder(\
Magento\Checkout\Model\Cart::class)
54 ->disableOriginalConstructor()
56 $this->loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class)
57 ->getMockForAbstractClass();
58 $this->wishlistHelperMock = $this->getMockBuilder(\
Magento\
Wishlist\Helper\Data::class)
59 ->disableOriginalConstructor()
61 $this->cartHelperMock = $this->getMockBuilder(\
Magento\Checkout\Helper\Cart::class)
62 ->disableOriginalConstructor()
64 $this->urlBuilderMock = $this->getMockBuilder(\
Magento\Framework\UrlInterface::class)
65 ->getMockForAbstractClass();
66 $this->managerMock = $this->getMockBuilder(\
Magento\Framework\Message\ManagerInterface::class)
67 ->getMockForAbstractClass();
68 $this->redirectMock = $this->getMockBuilder(\
Magento\Framework\
App\
Response\RedirectInterface::class)
69 ->getMockForAbstractClass();
71 $this->model = new \Magento\Wishlist\Model\ItemCarrier(
73 $this->quantityProcessorMock,
76 $this->wishlistHelperMock,
77 $this->cartHelperMock,
78 $this->urlBuilderMock,
87 public function testMoveAllToCart()
90 $sessionCustomerId = 23;
93 $productOneName =
'product one';
94 $productTwoName =
'product two';
97 $indexUrl =
'index_url';
98 $redirectUrl =
'redirect_url';
101 $itemOneMock = $this->getMockBuilder(\
Magento\
Wishlist\Model\Item::class)
102 ->setMethods([
'getProduct',
'unsProduct',
'getId',
'setQty',
'addToCart',
'delete',
'getProductUrl'])
103 ->disableOriginalConstructor()
106 $itemTwoMock = $this->getMockBuilder(\
Magento\
Wishlist\Model\Item::class)
107 ->setMethods([
'getProduct',
'unsProduct',
'getId',
'setQty',
'addToCart',
'delete',
'getProductUrl'])
108 ->disableOriginalConstructor()
112 $productOneMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
113 ->setMethods([
'getDisableAddToCart',
'setDisableAddToCart',
'getName'])
114 ->disableOriginalConstructor()
117 $productTwoMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
118 ->setMethods([
'getDisableAddToCart',
'setDisableAddToCart',
'getName'])
119 ->disableOriginalConstructor()
122 $itemOneMock->expects($this->any())
123 ->method(
'getProduct')
124 ->willReturn($productOneMock);
125 $itemTwoMock->expects($this->any())
126 ->method(
'getProduct')
127 ->willReturn($productTwoMock);
132 $wishlistMock = $this->getMockBuilder(\
Magento\
Wishlist\Model\Wishlist::class)
133 ->disableOriginalConstructor()
136 $this->sessionMock->expects($this->once())
137 ->method(
'getCustomerId')
138 ->willReturn($sessionCustomerId);
140 $wishlistMock->expects($this->once())
142 ->with($sessionCustomerId)
143 ->willReturn($isOwner);
144 $wishlistMock->expects($this->once())
146 ->willReturn($wishlistId);
150 ->disableOriginalConstructor()
153 $wishlistMock->expects($this->once())
154 ->method(
'getItemCollection')
155 ->willReturn($collectionMock);
157 $collectionMock->expects($this->once())
158 ->method(
'setVisibilityFilter')
162 $productOneMock->expects($this->once())
163 ->method(
'getDisableAddToCart')
165 $productOneMock->expects($this->once())
166 ->method(
'setDisableAddToCart')
168 $productTwoMock->expects($this->once())
169 ->method(
'getDisableAddToCart')
171 $productTwoMock->expects($this->once())
172 ->method(
'setDisableAddToCart')
175 $itemOneMock->expects($this->once())
176 ->method(
'unsProduct');
177 $itemTwoMock->expects($this->once())
178 ->method(
'unsProduct');
179 $itemOneMock->expects($this->exactly(2))
181 ->willReturn($itemOneId);
182 $itemTwoMock->expects($this->once())
184 ->willReturn($itemTwoId);
186 $this->quantityProcessorMock->expects($this->once())
188 ->with($qtys[$itemOneId])
189 ->willReturnArgument(0);
190 $itemOneMock->expects($this->once())
192 ->with($qtys[$itemOneId])
194 $itemTwoMock->expects($this->never())
197 $itemOneMock->expects($this->once())
198 ->method(
'addToCart')
199 ->with($this->cartMock, $isOwner)
201 $itemTwoMock->expects($this->once())
202 ->method(
'addToCart')
203 ->with($this->cartMock, $isOwner)
206 $this->wishlistHelperMock->expects($this->once())
207 ->method(
'getListUrl')
209 ->willReturn($indexUrl);
211 $this->cartHelperMock->expects($this->once())
212 ->method(
'getShouldRedirectToCart')
215 $this->cartHelperMock->expects($this->once())
216 ->method(
'getCartUrl')
217 ->willReturn($redirectUrl);
219 $wishlistMock->expects($this->once())
223 $productOneMock->expects($this->any())
225 ->willReturn($productOneName);
226 $productTwoMock->expects($this->any())
228 ->willReturn($productTwoName);
230 $this->managerMock->expects($this->once())
231 ->method(
'addSuccess')
232 ->with(
__(
'%1 product(s) have been added to shopping cart: %2.', 1,
'"' . $productTwoName .
'"'),
null)
235 $this->cartMock->expects($this->once())
240 $quoteMock = $this->getMockBuilder(\
Magento\
Quote\Model\Quote::class)
241 ->disableOriginalConstructor()
244 $this->cartMock->expects($this->once())
246 ->willReturn($quoteMock);
248 $quoteMock->expects($this->once())
249 ->method(
'collectTotals')
252 $this->wishlistHelperMock->expects($this->once())
253 ->method(
'calculate')
256 $this->assertEquals($redirectUrl, $this->model->moveAllToCart($wishlistMock, $qtys));
262 public function testMoveAllToCartWithNotSalableAndOptions()
264 $sessionCustomerId = 23;
267 $productOneName =
'product one';
268 $productTwoName =
'product two';
269 $qtys = [14 => 21, 17 => 29];
271 $indexUrl =
'index_url';
272 $redirectUrl =
'redirect_url';
273 $sharingCode =
'sharingcode';
276 $itemOneMock = $this->getMockBuilder(\
Magento\Wishlist\Model\Item::class)
277 ->setMethods([
'getProduct',
'unsProduct',
'getId',
'setQty',
'addToCart',
'delete',
'getProductUrl'])
278 ->disableOriginalConstructor()
281 $itemTwoMock = $this->getMockBuilder(\
Magento\Wishlist\Model\Item::class)
282 ->setMethods([
'getProduct',
'unsProduct',
'getId',
'setQty',
'addToCart',
'delete',
'getProductUrl'])
283 ->disableOriginalConstructor()
287 $productOneMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
288 ->setMethods([
'getDisableAddToCart',
'setDisableAddToCart',
'getName'])
289 ->disableOriginalConstructor()
292 $productTwoMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
293 ->setMethods([
'getDisableAddToCart',
'setDisableAddToCart',
'getName'])
294 ->disableOriginalConstructor()
297 $itemOneMock->expects($this->any())
298 ->method(
'getProduct')
299 ->willReturn($productOneMock);
300 $itemTwoMock->expects($this->any())
301 ->method(
'getProduct')
302 ->willReturn($productTwoMock);
307 $wishlistMock = $this->getMockBuilder(\
Magento\Wishlist\Model\Wishlist::class)
308 ->setMethods([
'isOwner',
'getItemCollection',
'getId',
'getSharingCode',
'save'])
309 ->disableOriginalConstructor()
312 $this->sessionMock->expects($this->once())
313 ->method(
'getCustomerId')
314 ->willReturn($sessionCustomerId);
316 $wishlistMock->expects($this->once())
318 ->with($sessionCustomerId)
319 ->willReturn($isOwner);
322 $collectionMock = $this->getMockBuilder(\
Magento\Wishlist\Model\
ResourceModel\Item\Collection::class)
323 ->disableOriginalConstructor()
326 $wishlistMock->expects($this->once())
327 ->method(
'getItemCollection')
328 ->willReturn($collectionMock);
330 $collectionMock->expects($this->once())
331 ->method(
'setVisibilityFilter')
335 $productOneMock->expects($this->once())
336 ->method(
'getDisableAddToCart')
338 $productOneMock->expects($this->once())
339 ->method(
'setDisableAddToCart')
341 $productTwoMock->expects($this->once())
342 ->method(
'getDisableAddToCart')
344 $productTwoMock->expects($this->once())
345 ->method(
'setDisableAddToCart')
348 $itemOneMock->expects($this->once())
349 ->method(
'unsProduct');
350 $itemTwoMock->expects($this->once())
351 ->method(
'unsProduct');
352 $itemOneMock->expects($this->exactly(2))
354 ->willReturn($itemOneId);
355 $itemTwoMock->expects($this->exactly(2))
357 ->willReturn($itemTwoId);
359 $this->quantityProcessorMock->expects($this->exactly(2))
363 [$qtys[$itemOneId], $qtys[$itemOneId]],
364 [$qtys[$itemTwoId], $qtys[$itemTwoId]],
367 $itemOneMock->expects($this->once())
369 ->with($qtys[$itemOneId])
371 $itemTwoMock->expects($this->once())
373 ->with($qtys[$itemTwoId])
376 $itemOneMock->expects($this->once())
377 ->method(
'addToCart')
378 ->with($this->cartMock, $isOwner)
379 ->willThrowException(
new \
Magento\Catalog\Model\Product\Exception(
__(
'Product Exception.')));
380 $itemTwoMock->expects($this->once())
381 ->method(
'addToCart')
382 ->with($this->cartMock, $isOwner)
383 ->willThrowException(
new \
Magento\Framework\Exception\LocalizedException(
__(
'Localized Exception.')));
386 $quoteMock = $this->getMockBuilder(\
Magento\Quote\Model\Quote::class)
387 ->disableOriginalConstructor()
390 $this->cartMock->expects($this->exactly(4))
392 ->willReturn($quoteMock);
395 $itemMock = $this->getMockBuilder(\
Magento\Quote\Model\Quote\Item::class)
396 ->disableOriginalConstructor()
399 $quoteMock->expects($this->exactly(2))
400 ->method(
'getItemByProduct')
401 ->willReturn($itemMock);
403 $quoteMock->expects($this->exactly(2))
404 ->method(
'deleteItem')
408 $wishlistMock->expects($this->once())
409 ->method(
'getSharingCode')
410 ->willReturn($sharingCode);
412 $this->urlBuilderMock->expects($this->once())
414 ->with(
'wishlist/shared', [
'code' => $sharingCode])
415 ->willReturn($indexUrl);
417 $this->cartHelperMock->expects($this->once())
418 ->method(
'getShouldRedirectToCart')
422 $this->redirectMock->expects($this->exactly(2))
423 ->method(
'getRefererUrl')
424 ->willReturn($redirectUrl);
426 $productOneMock->expects($this->any())
428 ->willReturn($productOneName);
429 $productTwoMock->expects($this->any())
431 ->willReturn($productTwoName);
433 $this->managerMock->expects($this->at(0))
435 ->with(
__(
'%1 for "%2".',
'Localized Exception', $productTwoName),
null)
438 $this->managerMock->expects($this->at(1))
442 'We couldn\'t add the following product(s) to the shopping cart: %1.',
443 '"' . $productOneName .
'"' 448 $this->wishlistHelperMock->expects($this->once())
449 ->method(
'calculate')
452 $this->assertEquals($indexUrl, $this->model->moveAllToCart($wishlistMock, $qtys));
458 public function testMoveAllToCartWithException()
461 $sessionCustomerId = 23;
464 $productOneName =
'product one';
465 $productTwoName =
'product two';
468 $indexUrl =
'index_url';
471 $itemOneMock = $this->getMockBuilder(\
Magento\Wishlist\Model\Item::class)
472 ->setMethods([
'getProduct',
'unsProduct',
'getId',
'setQty',
'addToCart',
'delete',
'getProductUrl'])
473 ->disableOriginalConstructor()
476 $itemTwoMock = $this->getMockBuilder(\
Magento\Wishlist\Model\Item::class)
477 ->setMethods([
'getProduct',
'unsProduct',
'getId',
'setQty',
'addToCart',
'delete',
'getProductUrl'])
478 ->disableOriginalConstructor()
482 $productOneMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
483 ->setMethods([
'getDisableAddToCart',
'setDisableAddToCart',
'getName'])
484 ->disableOriginalConstructor()
487 $productTwoMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
488 ->setMethods([
'getDisableAddToCart',
'setDisableAddToCart',
'getName'])
489 ->disableOriginalConstructor()
492 $itemOneMock->expects($this->any())
493 ->method(
'getProduct')
494 ->willReturn($productOneMock);
495 $itemTwoMock->expects($this->any())
496 ->method(
'getProduct')
497 ->willReturn($productTwoMock);
502 $wishlistMock = $this->getMockBuilder(\
Magento\Wishlist\Model\Wishlist::class)
503 ->disableOriginalConstructor()
506 $this->sessionMock->expects($this->once())
507 ->method(
'getCustomerId')
508 ->willReturn($sessionCustomerId);
510 $wishlistMock->expects($this->once())
512 ->with($sessionCustomerId)
513 ->willReturn($isOwner);
514 $wishlistMock->expects($this->once())
516 ->willReturn($wishlistId);
519 $collectionMock = $this->getMockBuilder(\
Magento\Wishlist\Model\
ResourceModel\Item\Collection::class)
520 ->disableOriginalConstructor()
523 $wishlistMock->expects($this->once())
524 ->method(
'getItemCollection')
525 ->willReturn($collectionMock);
527 $collectionMock->expects($this->once())
528 ->method(
'setVisibilityFilter')
532 $productOneMock->expects($this->once())
533 ->method(
'getDisableAddToCart')
535 $productOneMock->expects($this->once())
536 ->method(
'setDisableAddToCart')
538 $productTwoMock->expects($this->once())
539 ->method(
'getDisableAddToCart')
541 $productTwoMock->expects($this->once())
542 ->method(
'setDisableAddToCart')
545 $itemOneMock->expects($this->once())
546 ->method(
'unsProduct');
547 $itemTwoMock->expects($this->once())
548 ->method(
'unsProduct');
549 $itemOneMock->expects($this->exactly(2))
551 ->willReturn($itemOneId);
552 $itemTwoMock->expects($this->once())
554 ->willReturn($itemTwoId);
556 $this->quantityProcessorMock->expects($this->once())
558 ->with($qtys[$itemOneId])
559 ->willReturnArgument(0);
560 $itemOneMock->expects($this->once())
562 ->with($qtys[$itemOneId])
564 $itemTwoMock->expects($this->never())
567 $itemOneMock->expects($this->once())
568 ->method(
'addToCart')
569 ->with($this->cartMock, $isOwner)
572 $exception = new \Exception(
'Exception.');
573 $itemTwoMock->expects($this->once())
574 ->method(
'addToCart')
575 ->with($this->cartMock, $isOwner)
576 ->willThrowException($exception);
578 $this->loggerMock->expects($this->once())
580 ->with($exception, []);
582 $this->managerMock->expects($this->at(0))
584 ->with(
__(
'We can\'t add this item to your shopping cart right now.'),
null)
587 $this->wishlistHelperMock->expects($this->once())
588 ->method(
'getListUrl')
590 ->willReturn($indexUrl);
592 $this->cartHelperMock->expects($this->once())
593 ->method(
'getShouldRedirectToCart')
597 $this->redirectMock->expects($this->once())
598 ->method(
'getRefererUrl')
601 $wishlistMock->expects($this->once())
603 ->willThrowException(
new \Exception());
605 $this->managerMock->expects($this->at(1))
607 ->with(
__(
'We can\'t update the Wish List right now.'),
null)
610 $productOneMock->expects($this->any())
612 ->willReturn($productOneName);
613 $productTwoMock->expects($this->any())
615 ->willReturn($productTwoName);
617 $this->managerMock->expects($this->once())
618 ->method(
'addSuccess')
619 ->with(
__(
'%1 product(s) have been added to shopping cart: %2.', 1,
'"' . $productOneName .
'"'),
null)
622 $this->cartMock->expects($this->once())
627 $quoteMock = $this->getMockBuilder(\
Magento\Quote\Model\Quote::class)
628 ->disableOriginalConstructor()
631 $this->cartMock->expects($this->once())
633 ->willReturn($quoteMock);
635 $quoteMock->expects($this->once())
636 ->method(
'collectTotals')
639 $this->wishlistHelperMock->expects($this->once())
640 ->method(
'calculate')
643 $this->assertEquals($indexUrl, $this->model->moveAllToCart($wishlistMock, $qtys));