Skip to content

Commit 0134ee6

Browse files
author
Stanislav Idolov
authored
ENGCOM-1344: [Forwardport] Refactor Code for Mass Order Unhold #14779
2 parents 8c554b9 + 484abcb commit 0134ee6

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

app/code/Magento/Sales/Controller/Adminhtml/Order/MassUnhold.php

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,37 @@
99
use Magento\Backend\App\Action\Context;
1010
use Magento\Ui\Component\MassAction\Filter;
1111
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
12+
use Magento\Sales\Api\OrderManagementInterface;
1213

1314
class MassUnhold extends AbstractMassAction
1415
{
1516
/**
1617
* Authorization level of a basic admin session
1718
*/
1819
const ADMIN_RESOURCE = 'Magento_Sales::unhold';
20+
21+
/**
22+
* @var OrderManagementInterface
23+
*/
24+
private $orderManagement;
1925

2026
/**
2127
* @param Context $context
2228
* @param Filter $filter
2329
* @param CollectionFactory $collectionFactory
30+
* @param OrderManagementInterface|null $orderManagement
2431
*/
25-
public function __construct(Context $context, Filter $filter, CollectionFactory $collectionFactory)
26-
{
32+
public function __construct(
33+
Context $context,
34+
Filter $filter,
35+
CollectionFactory $collectionFactory,
36+
OrderManagementInterface $orderManagement = null
37+
) {
2738
parent::__construct($context, $filter);
2839
$this->collectionFactory = $collectionFactory;
40+
$this->orderManagement = $orderManagement ?: \Magento\Framework\App\ObjectManager::getInstance()->get(
41+
\Magento\Sales\Api\OrderManagementInterface::class
42+
);
2943
}
3044

3145
/**
@@ -40,12 +54,10 @@ protected function massAction(AbstractCollection $collection)
4054

4155
/** @var \Magento\Sales\Model\Order $order */
4256
foreach ($collection->getItems() as $order) {
43-
$order->load($order->getId());
4457
if (!$order->canUnhold()) {
4558
continue;
4659
}
47-
$order->unhold();
48-
$order->save();
60+
$this->orderManagement->unHold($order->getEntityId());
4961
$countUnHoldOrder++;
5062
}
5163

app/code/Magento/Sales/Test/Unit/Controller/Adminhtml/Order/MassUnholdTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ class MassUnholdTest extends \PHPUnit\Framework\TestCase
8585
*/
8686
protected $filterMock;
8787

88+
/**
89+
* @var \PHPUnit_Framework_MockObject_MockObject
90+
*/
91+
private $orderManagementMock;
92+
8893
protected function setUp()
8994
{
9095
$objectManagerHelper = new ObjectManagerHelper($this);
@@ -146,12 +151,15 @@ protected function setUp()
146151
->method('create')
147152
->willReturn($this->orderCollectionMock);
148153

154+
$this->orderManagementMock = $this->createMock(\Magento\Sales\Api\OrderManagementInterface::class);
155+
149156
$this->massAction = $objectManagerHelper->getObject(
150157
\Magento\Sales\Controller\Adminhtml\Order\MassUnhold::class,
151158
[
152159
'context' => $this->contextMock,
153160
'filter' => $this->filterMock,
154-
'collectionFactory' => $this->orderCollectionFactoryMock
161+
'collectionFactory' => $this->orderCollectionFactoryMock,
162+
'orderManagement' => $this->orderManagementMock
155163
]
156164
);
157165
}
@@ -175,9 +183,7 @@ public function testExecuteOneOrdersReleasedFromHold()
175183
->method('canUnhold')
176184
->willReturn(true);
177185
$order1->expects($this->once())
178-
->method('unhold');
179-
$order1->expects($this->once())
180-
->method('save');
186+
->method('getEntityId');
181187

182188
$this->orderCollectionMock->expects($this->once())
183189
->method('count')
@@ -187,6 +193,8 @@ public function testExecuteOneOrdersReleasedFromHold()
187193
->method('canUnhold')
188194
->willReturn(false);
189195

196+
$this->orderManagementMock->expects($this->atLeastOnce())->method('unHold')->willReturn(true);
197+
190198
$this->messageManagerMock->expects($this->once())
191199
->method('addError')
192200
->with('1 order(s) were not released from on hold status.');

0 commit comments

Comments
 (0)