Skip to content

Commit e8fe054

Browse files
author
Bohdan Shevchenko
committed
MC-6425: [API] Order with state STATE_HOLDED should not be canceled
1 parent 1537251 commit e8fe054

File tree

1 file changed

+43
-22
lines changed

1 file changed

+43
-22
lines changed

dev/tests/api-functional/testsuite/Magento/Sales/Service/V1/OrderCancelTest.php

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
namespace Magento\Sales\Service\V1;
88

9+
use Magento\Framework\ObjectManagerInterface;
10+
use Magento\Sales\Model\Order\Interceptor;
911
use Magento\TestFramework\TestCase\WebapiAbstract;
1012

1113
/**
@@ -14,16 +16,40 @@
1416
class OrderCancelTest extends WebapiAbstract
1517
{
1618
const SERVICE_VERSION = 'V1';
17-
1819
const SERVICE_NAME = 'salesOrderManagementV1';
1920

2021
/**
21-
* @magentoApiDataFixture Magento/Sales/_files/order.php
22+
* @var ObjectManagerInterface
2223
*/
23-
public function testOrderCancel()
24+
private $objectManager;
25+
26+
/**
27+
* @inheritdoc
28+
*/
29+
protected function setUp()
30+
{
31+
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
32+
}
33+
34+
/**
35+
* Gets order by increment ID.
36+
*
37+
* @param string $incrementId
38+
* @return Interceptor
39+
*/
40+
private function getOrder(string $incrementId): Interceptor
41+
{
42+
return $this->objectManager->get(\Magento\Sales\Model\Order::class)->loadByIncrementId($incrementId);
43+
}
44+
45+
/**
46+
* Send API request for canceling the order
47+
*
48+
* @param object $order
49+
* @return array|bool|float|int|string
50+
*/
51+
private function sendCancelRequest($order)
2452
{
25-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
26-
$order = $objectManager->get(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
2753
$serviceInfo = [
2854
'rest' => [
2955
'resourcePath' => '/V1/orders/' . $order->getId() . '/cancel',
@@ -36,7 +62,16 @@ public function testOrderCancel()
3662
],
3763
];
3864
$requestData = ['id' => $order->getId()];
39-
$result = $this->_webApiCall($serviceInfo, $requestData);
65+
return $this->_webApiCall($serviceInfo, $requestData);
66+
}
67+
68+
/**
69+
* @magentoApiDataFixture Magento/Sales/_files/order.php
70+
*/
71+
public function testOrderCancel()
72+
{
73+
$order = $this->getOrder('100000001');
74+
$result = $this->sendCancelRequest($order);
4075
$this->assertTrue($result);
4176
}
4277

@@ -45,22 +80,8 @@ public function testOrderCancel()
4580
*/
4681
public function testOrderWithStateHoldedShouldNotBeCanceled()
4782
{
48-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
49-
$order = $objectManager->get(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
50-
$serviceInfo = [
51-
'rest' => [
52-
'resourcePath' => '/V1/orders/' . $order->getId() . '/cancel',
53-
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
54-
],
55-
'soap' => [
56-
'service' => self::SERVICE_NAME,
57-
'serviceVersion' => self::SERVICE_VERSION,
58-
'operation' => self::SERVICE_NAME . 'cancel',
59-
],
60-
];
61-
62-
$requestData = ['id' => $order->getId()];
63-
$result = $this->_webApiCall($serviceInfo, $requestData);
83+
$order = $this->getOrder('100000001');
84+
$result = $this->sendCancelRequest($order);
6485
$this->assertFalse($result);
6586
}
6687
}

0 commit comments

Comments
 (0)