Skip to content

Commit 8e8dc28

Browse files
author
Vitaliy Boyko
committed
graphQl-533: fixed set purchase order
1 parent ab188bc commit 8e8dc28

File tree

3 files changed

+77
-4
lines changed

3 files changed

+77
-4
lines changed

app/code/Magento/QuoteGraphQl/Model/Resolver/SetPaymentMethodOnCart.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
6969
}
7070
$paymentMethodCode = $args['input']['payment_method']['code'];
7171

72-
$poNumber = isset($args['input']['payment_method']['purchase_order_number'])
73-
&& empty($args['input']['payment_method']['purchase_order_number'])
74-
? $args['input']['payment_method']['purchase_order_number']
75-
: null;
72+
$poNumber = $args['input']['payment_method']['purchase_order_number'] ?? null;
7673

7774
$cart = $this->getCartForUser->execute($maskedCartId, $context->getUserId());
7875
$payment = $this->paymentFactory->create([

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Customer/SetPaymentMethodOnCartTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,44 @@ public function testSetPaymentOnCartWithSimpleProduct()
6060
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
6161
}
6262

63+
/**
64+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
65+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
66+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
67+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
68+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
69+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/enable_offline_payment_methods.php
70+
*/
71+
public function testSetPurchaseOrderPaymentMethodOnCartWithSimpleProduct()
72+
{
73+
$methodCode = Checkmo::PAYMENT_METHOD_CHECKMO_CODE;
74+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
75+
76+
$query = <<<QUERY
77+
mutation {
78+
setPaymentMethodOnCart(input: {
79+
cart_id: "$maskedQuoteId"
80+
payment_method: {
81+
code: "$methodCode",
82+
purchase_order_number: "123456"
83+
}
84+
}) {
85+
cart {
86+
selected_payment_method {
87+
code
88+
}
89+
}
90+
}
91+
}
92+
QUERY;
93+
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
94+
95+
self::assertArrayHasKey('setPaymentMethodOnCart', $response);
96+
self::assertArrayHasKey('cart', $response['setPaymentMethodOnCart']);
97+
self::assertArrayHasKey('selected_payment_method', $response['setPaymentMethodOnCart']['cart']);
98+
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
99+
}
100+
63101
/**
64102
* @magentoApiDataFixture Magento/Customer/_files/customer.php
65103
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Guest/SetPaymentMethodOnCartTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
1111
use Magento\OfflinePayments\Model\Cashondelivery;
1212
use Magento\OfflinePayments\Model\Checkmo;
13+
use Magento\OfflinePayments\Model\Purchaseorder;
1314
use Magento\TestFramework\Helper\Bootstrap;
1415
use Magento\TestFramework\TestCase\GraphQlAbstract;
1516

@@ -52,6 +53,43 @@ public function testSetPaymentOnCartWithSimpleProduct()
5253
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
5354
}
5455

56+
/**
57+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
58+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
59+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
60+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
61+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/enable_offline_payment_methods.php
62+
*/
63+
public function testSetPurchaseOrderPaymentMethodOnCartWithSimpleProduct()
64+
{
65+
$methodCode = Purchaseorder::PAYMENT_METHOD_PURCHASEORDER_CODE;
66+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
67+
68+
$query = <<<QUERY
69+
mutation {
70+
setPaymentMethodOnCart(input: {
71+
cart_id: "{$maskedQuoteId}",
72+
payment_method: {
73+
code: "{$methodCode}",
74+
purchase_order_number: "123456"
75+
}
76+
}) {
77+
cart {
78+
selected_payment_method {
79+
code
80+
}
81+
}
82+
}
83+
}
84+
QUERY;
85+
$response = $this->graphQlQuery($query);
86+
87+
self::assertArrayHasKey('setPaymentMethodOnCart', $response);
88+
self::assertArrayHasKey('cart', $response['setPaymentMethodOnCart']);
89+
self::assertArrayHasKey('selected_payment_method', $response['setPaymentMethodOnCart']['cart']);
90+
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
91+
}
92+
5593
/**
5694
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
5795
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php

0 commit comments

Comments
 (0)