Skip to content

Commit 34a1102

Browse files
authored
LYNX-548 - Error codes for order cancellation based on the error message (Optimization)
1 parent 5ec2fee commit 34a1102

File tree

6 files changed

+136
-226
lines changed

6 files changed

+136
-226
lines changed

app/code/Magento/OrderCancellationGraphQl/Model/CancelOrderErrorCodes.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

app/code/Magento/OrderCancellationGraphQl/Model/Resolver/CancelOrderError.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,17 @@
1919
use Magento\Framework\GraphQl\Config\Element\Field;
2020
use Magento\Framework\GraphQl\Query\ResolverInterface;
2121
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
22-
use Magento\OrderCancellationGraphQl\Model\CancelOrderErrorCodes;
2322

2423
/**
2524
* Resolver to return the description of a CancellationReason with error code
2625
*/
2726
class CancelOrderError implements ResolverInterface
2827
{
2928
/**
30-
* @param CancelOrderErrorCodes $cancelOrderErrorCodes
29+
* @param array $errorMessageCodesMapper
3130
*/
3231
public function __construct(
33-
private readonly CancelOrderErrorCodes $cancelOrderErrorCodes
32+
private readonly array $errorMessageCodesMapper
3433
) {
3534
}
3635

@@ -50,7 +49,7 @@ public function resolve(
5049

5150
return [
5251
'message' => $value['error'],
53-
'code' => $this->cancelOrderErrorCodes->getErrorCodeFromMapper((string) $value['error']),
52+
'code' => $this->errorMessageCodesMapper[strtolower((string) $value['error'])] ?? 'UNDEFINED',
5453
];
5554
}
5655
}

app/code/Magento/OrderCancellationGraphQl/etc/graphql/di.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,15 @@
2323
</argument>
2424
</arguments>
2525
</type>
26+
<type name="Magento\OrderCancellationGraphQl\Model\Resolver\CancelOrderError">
27+
<arguments>
28+
<argument name="errorMessageCodesMapper" xsi:type="array">
29+
<item name="order cancellation is not enabled for requested store." xsi:type="string">ORDER_CANCELLATION_DISABLED</item>
30+
<item name="current user is not authorized to cancel this order" xsi:type="string">UNAUTHORISED</item>
31+
<item name="the entity that was requested doesn't exist. verify the entity and try again." xsi:type="string">ORDER_NOT_FOUND</item>
32+
<item name="order with one or more items shipped cannot be cancelled" xsi:type="string">PARTIAL_ORDER_ITEM_SHIPPED</item>
33+
<item name="order already closed, complete, cancelled or on hold" xsi:type="string">INVALID_ORDER_STATUS</item>
34+
</argument>
35+
</arguments>
36+
</type>
2637
</config>

dev/tests/api-functional/testsuite/Magento/GraphQl/OrderCancellation/CancelGuestOrderTest.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,9 @@ public function testAttemptToCancelOrderWhenCancellationFeatureDisabled()
151151
reason: "Sample reason"
152152
}
153153
){
154-
error
154+
errorV2 {
155+
message
156+
}
155157
order {
156158
status
157159
}
@@ -161,7 +163,9 @@ public function testAttemptToCancelOrderWhenCancellationFeatureDisabled()
161163
$this->assertEquals(
162164
[
163165
'cancelOrder' => [
164-
'error' => 'Order cancellation is not enabled for requested store.',
166+
'errorV2' => [
167+
'message' => 'Order cancellation is not enabled for requested store.'
168+
],
165169
'order' => null
166170
]
167171
],
@@ -199,7 +203,9 @@ public function testAttemptToCancelOrderWithSomeStatuses(string $status, string
199203
[
200204
'cancelOrder' =>
201205
[
202-
'error' => 'Order already closed, complete, cancelled or on hold',
206+
'errorV2' => [
207+
'message' => 'Order already closed, complete, cancelled or on hold'
208+
],
203209
'order' => [
204210
'status' => $expectedStatus
205211
]
@@ -240,7 +246,9 @@ public function testAttemptToCancelOrderWithOfflinePaymentFullyInvoicedFullyShip
240246
[
241247
'cancelOrder' =>
242248
[
243-
'error' => 'Order already closed, complete, cancelled or on hold',
249+
'errorV2' => [
250+
'message' => 'Order already closed, complete, cancelled or on hold'
251+
],
244252
'order' => [
245253
'status' => 'Complete'
246254
]
@@ -294,7 +302,9 @@ public function testAttemptToCancelOrderWithOfflinePaymentFullyInvoicedPartially
294302
[
295303
'cancelOrder' =>
296304
[
297-
'error' => 'Order with one or more items shipped cannot be cancelled',
305+
'errorV2' => [
306+
'message' => 'Order with one or more items shipped cannot be cancelled'
307+
],
298308
'order' => [
299309
'status' => 'Processing'
300310
]
@@ -335,7 +345,9 @@ public function testAttemptToCancelOrderWithOfflinePaymentFullyInvoicedFullyRefu
335345
[
336346
'cancelOrder' =>
337347
[
338-
'error' => 'Order already closed, complete, cancelled or on hold',
348+
'errorV2' => [
349+
'message' => 'Order already closed, complete, cancelled or on hold'
350+
],
339351
'order' => [
340352
'status' => 'Closed'
341353
]
@@ -369,7 +381,7 @@ public function testCancelOrderWithOutAnyAmountPaid()
369381
[
370382
'cancelOrder' =>
371383
[
372-
'error' => null,
384+
'errorV2' => null,
373385
'order' => [
374386
'status' => 'Pending'
375387
]
@@ -399,7 +411,9 @@ private function getCancelOrderMutation(OrderInterface $order): string
399411
reason: "Cancel sample reason"
400412
}
401413
){
402-
error
414+
errorV2 {
415+
message
416+
}
403417
order {
404418
status
405419
}

0 commit comments

Comments
 (0)