Skip to content

Commit 0a18062

Browse files
committed
Implementation changes to reuse plugin
1 parent 5d8dc6f commit 0a18062

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

app/code/Magento/Multishipping/Model/Cart/MultishippingClearItemAddress.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Magento\Checkout\Controller\Cart;
1111
use Magento\Checkout\Controller\Sidebar\UpdateItemQty;
1212
use Magento\Checkout\Model\Session;
13+
use Magento\Checkout\Model\Cart as CartModel;
1314
use Magento\Customer\Api\AddressRepositoryInterface;
1415
use Magento\Framework\App\RequestInterface;
1516
use Magento\Framework\Exception\LocalizedException;
@@ -19,6 +20,8 @@
1920

2021
/**
2122
* Cleans shipping addresses and item assignments after MultiShipping flow
23+
*
24+
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
2225
*/
2326
class MultishippingClearItemAddress
2427
{
@@ -42,22 +45,30 @@ class MultishippingClearItemAddress
4245
*/
4346
private $disableMultishipping;
4447

48+
/**
49+
* @var CartModel
50+
*/
51+
private $cartmodel;
52+
4553
/**
4654
* @param CartRepositoryInterface $cartRepository
4755
* @param Session $checkoutSession
4856
* @param AddressRepositoryInterface $addressRepository
4957
* @param DisableMultishipping $disableMultishipping
58+
* @param CartModel $cartmodel
5059
*/
5160
public function __construct(
5261
CartRepositoryInterface $cartRepository,
5362
Session $checkoutSession,
5463
AddressRepositoryInterface $addressRepository,
55-
DisableMultishipping $disableMultishipping
64+
DisableMultishipping $disableMultishipping,
65+
CartModel $cartmodel
5666
) {
5767
$this->cartRepository = $cartRepository;
5868
$this->checkoutSession = $checkoutSession;
5969
$this->addressRepository = $addressRepository;
6070
$this->disableMultishipping = $disableMultishipping;
71+
$this->cartmodel = $cartmodel;
6172
}
6273

6374
/**
@@ -90,9 +101,8 @@ public function clearAddressItem($subject, $request)
90101
}
91102
$this->cartRepository->save($quote);
92103
if ($subject instanceof UpdateItemQty) {
93-
$quote = $this->checkoutSession->getQuote();
94-
$quote->setTotalsCollectedFlag(false);
95-
$this->cartRepository->save($quote);
104+
$quote = $this->cartRepository->get($quote->getId());
105+
$this->cartmodel->setQuote($quote);
96106
}
97107
} elseif ($this->disableMultishipping->execute($quote) && $this->isVirtualItemInQuote($quote)) {
98108
$quote->setTotalsCollectedFlag(false);

app/code/Magento/Multishipping/Test/Unit/Model/Cart/MultishippingClearItemAddressTest.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Magento\Checkout\Controller\Cart;
1111
use Magento\Checkout\Controller\Sidebar\UpdateItemQty;
1212
use Magento\Checkout\Model\Session;
13+
use Magento\Checkout\Model\Cart as CartModel;
1314
use Magento\Customer\Api\AddressRepositoryInterface;
1415
use Magento\Customer\Api\Data\AddressInterface;
1516
use Magento\Customer\Api\Data\CustomerInterface;
@@ -50,17 +51,24 @@ class MultishippingClearItemAddressTest extends TestCase
5051
*/
5152
private $addressRepositoryMock;
5253

54+
/**
55+
* @var CartModel|MockObject
56+
*/
57+
private $cartMock;
58+
5359
protected function setUp(): void
5460
{
5561
$this->cartRepositoryMock = $this->getMockForAbstractClass(CartRepositoryInterface::class);
5662
$this->checkoutSessionMock = $this->createMock(Session::class);
5763
$this->addressRepositoryMock = $this->getMockForAbstractClass(AddressRepositoryInterface::class);
5864
$disableMultishippingMock = $this->createMock(DisableMultishipping::class);
65+
$this->cartMock = $this->createMock(CartModel::class);
5966
$this->model = new MultishippingClearItemAddress(
6067
$this->cartRepositoryMock,
6168
$this->checkoutSessionMock,
6269
$this->addressRepositoryMock,
63-
$disableMultishippingMock
70+
$disableMultishippingMock,
71+
$this->cartMock
6472
);
6573
}
6674

@@ -125,7 +133,12 @@ public function testClearAddressItem(
125133
$this->cartRepositoryMock->expects($this->any())
126134
->method('save')
127135
->with($quoteMock);
128-
136+
if ($actionName instanceof UpdateItemQty) {
137+
$quoteMock->expects($this->any())->method('getId')->willReturnSelf();
138+
$this->cartRepositoryMock->expects($this->any())
139+
->method('get')->with($quoteMock)->willReturn($quoteMock);
140+
$this->cartMock->expects($this->any())->method('setQuote')->with($quoteMock);
141+
}
129142
$this->model->clearAddressItem(
130143
$this->createMock(Cart::class),
131144
$requestMock

0 commit comments

Comments
 (0)