Skip to content

Commit b0665a8

Browse files
author
Igor Melnikov
committed
MAGETWO-65530: Remove remaining usages in Wishlist module
- adding error handling
1 parent 4dd4c01 commit b0665a8

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

app/code/Magento/Wishlist/Model/Wishlist.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -413,9 +413,11 @@ public function addNewItem($product, $buyRequest = null, $forciblySetQty = false
413413
if ($buyRequest instanceof \Magento\Framework\DataObject) {
414414
$_buyRequest = $buyRequest;
415415
} elseif (is_string($buyRequest)) {
416-
$_buyRequest = new \Magento\Framework\DataObject(
417-
$this->serializer->unserialize($buyRequest)
418-
);
416+
$buyRequestData = $this->serializer->unserialize($buyRequest);
417+
if (!is_array($buyRequestData)) {
418+
throw new \InvalidArgumentException('Invalid wishlist item configuration.');
419+
}
420+
$_buyRequest = new \Magento\Framework\DataObject($buyRequestData);
419421
} elseif (is_array($buyRequest)) {
420422
$_buyRequest = new \Magento\Framework\DataObject($buyRequest);
421423
} else {

dev/tests/integration/testsuite/Magento/Wishlist/Model/WishlistTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,27 @@ public function testAddNewItem()
6363
$this->assertInstanceOf(Item::class, $wishlistItem);
6464
$this->assertEquals($wishlistItem->getQty(), 10);
6565
}
66+
67+
/**
68+
* @magentoDataFixture Magento/Catalog/_files/product_simple.php
69+
* @magentoDataFixture Magento/Customer/_files/customer.php
70+
* @magentoAppIsolation enabled
71+
* @magentoDbIsolation enabled
72+
* @expectedException \InvalidArgumentException
73+
* @expectedExceptionMessage Invalid wishlist item configuration.
74+
*/
75+
public function testAddNewItemInvalidWishlistItemConfiguration()
76+
{
77+
$productSku = 'simple';
78+
$customerId = 1;
79+
/** @var ProductRepositoryInterface $productRepository */
80+
$productRepository = $this->objectManager->create(ProductRepositoryInterface::class);
81+
$product = $productRepository->get($productSku);
82+
$this->wishlist->loadByCustomerId($customerId, true);
83+
$this->wishlist->addNewItem(
84+
$product,
85+
'{"qty":2'
86+
);
87+
$this->wishlist->addNewItem($product);
88+
}
6689
}

0 commit comments

Comments
 (0)