Skip to content

Commit 3993809

Browse files
author
Bohdan Shevchenko
committed
MC-6459: [API] Order with state STATE_COMPLETE should not be canceled
1 parent f94b4a8 commit 3993809

File tree

1 file changed

+55
-6
lines changed

1 file changed

+55
-6
lines changed

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

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,51 @@
66

77
namespace Magento\Sales\Service\V1;
88

9+
use Magento\Framework\ObjectManagerInterface;
10+
use Magento\Sales\Model\Order;
11+
use Magento\TestFramework\Helper\Bootstrap;
912
use Magento\TestFramework\TestCase\WebapiAbstract;
1013

14+
/**
15+
* Canceling of the order
16+
*/
1117
class OrderCancelTest extends WebapiAbstract
1218
{
1319
const SERVICE_VERSION = 'V1';
14-
1520
const SERVICE_NAME = 'salesOrderManagementV1';
1621

1722
/**
18-
* @magentoApiDataFixture Magento/Sales/_files/order.php
23+
* @var ObjectManagerInterface
1924
*/
20-
public function testOrderCancel()
25+
private $objectManager;
26+
27+
/**
28+
* @inheritdoc
29+
*/
30+
protected function setUp()
31+
{
32+
$this->objectManager = Bootstrap::getObjectManager();
33+
}
34+
35+
/**
36+
* Gets order by increment ID.
37+
*
38+
* @param string $incrementId
39+
* @return Order
40+
*/
41+
private function getOrder(string $incrementId): Order
42+
{
43+
return $this->objectManager->create(Order::class)->loadByIncrementId($incrementId);
44+
}
45+
46+
/**
47+
* Send API request for canceling the order
48+
*
49+
* @param Order $order
50+
* @return array|bool|float|int|string
51+
*/
52+
private function sendCancelRequest(Order $order)
2153
{
22-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
23-
$order = $objectManager->get(\Magento\Sales\Model\Order::class)->loadByIncrementId('100000001');
2454
$serviceInfo = [
2555
'rest' => [
2656
'resourcePath' => '/V1/orders/' . $order->getId() . '/cancel',
@@ -33,7 +63,26 @@ public function testOrderCancel()
3363
],
3464
];
3565
$requestData = ['id' => $order->getId()];
36-
$result = $this->_webApiCall($serviceInfo, $requestData);
66+
return $this->_webApiCall($serviceInfo, $requestData);
67+
}
68+
69+
/**
70+
* @magentoApiDataFixture Magento/Sales/_files/order.php
71+
*/
72+
public function testOrderCancel()
73+
{
74+
$order = $this->getOrder('100000001');
75+
$result = $this->sendCancelRequest($order);
3776
$this->assertTrue($result);
3877
}
78+
79+
/**
80+
* @magentoApiDataFixture Magento/Sales/_files/order_with_shipping_and_invoice.php
81+
*/
82+
public function testOrderWithStateCompleteShouldNotBeCanceled()
83+
{
84+
$order = $this->getOrder('100000001');
85+
$result = $this->sendCancelRequest($order);
86+
$this->assertFalse($result);
87+
}
3988
}

0 commit comments

Comments
 (0)