Skip to content
This repository was archived by the owner on Dec 19, 2019. It is now read-only.

Commit 97c416c

Browse files
committed
Test for offline payment methods
Fixes #601
1 parent e73db01 commit 97c416c

File tree

2 files changed

+315
-0
lines changed

2 files changed

+315
-0
lines changed
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\GraphQl\Quote\Customer;
9+
10+
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
11+
use Magento\Integration\Api\CustomerTokenServiceInterface;
12+
use Magento\OfflinePayments\Model\Banktransfer;
13+
use Magento\OfflinePayments\Model\Cashondelivery;
14+
use Magento\OfflinePayments\Model\Checkmo;
15+
use Magento\OfflinePayments\Model\Purchaseorder;
16+
use Magento\TestFramework\Helper\Bootstrap;
17+
use Magento\TestFramework\TestCase\GraphQlAbstract;
18+
19+
/**
20+
* Test for setting offline payment methods on cart
21+
*/
22+
class SetOfflinePaymentMethodsOnCartTest extends GraphQlAbstract
23+
{
24+
/**
25+
* @var GetMaskedQuoteIdByReservedOrderId
26+
*/
27+
private $getMaskedQuoteIdByReservedOrderId;
28+
29+
/**
30+
* @var CustomerTokenServiceInterface
31+
*/
32+
private $customerTokenService;
33+
34+
/**
35+
* @inheritdoc
36+
*/
37+
protected function setUp()
38+
{
39+
$objectManager = Bootstrap::getObjectManager();
40+
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
41+
$this->customerTokenService = $objectManager->get(CustomerTokenServiceInterface::class);
42+
}
43+
44+
/**
45+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
46+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
47+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
48+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
49+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
50+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/enable_offline_payment_methods.php
51+
*
52+
* @param string $methodCode
53+
* @dataProvider offlinePaymentMethodDataProvider
54+
*/
55+
public function testSetOfflinePaymentMethod(string $methodCode)
56+
{
57+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
58+
59+
$query = $this->getQuery(
60+
$maskedQuoteId,
61+
$methodCode
62+
);
63+
$response = $this->graphQlMutation($query, [], '', $this->getHeaderMap());
64+
65+
self::assertArrayHasKey('setPaymentMethodOnCart', $response);
66+
self::assertArrayHasKey('cart', $response['setPaymentMethodOnCart']);
67+
self::assertArrayHasKey('selected_payment_method', $response['setPaymentMethodOnCart']['cart']);
68+
self::assertArrayHasKey('code', $response['setPaymentMethodOnCart']['cart']['selected_payment_method']);
69+
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
70+
}
71+
72+
/**
73+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
74+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
75+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
76+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
77+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
78+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/enable_offline_payment_methods.php
79+
*
80+
* @param string $methodCode
81+
*/
82+
public function testSetPurchaseOrderPaymentMethod()
83+
{
84+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
85+
$methodCode = Purchaseorder::PAYMENT_METHOD_PURCHASEORDER_CODE;
86+
$poNumber = 'abc123';
87+
88+
$query = <<<QUERY
89+
mutation {
90+
setPaymentMethodOnCart(input: {
91+
cart_id: "{$maskedQuoteId}",
92+
payment_method: {
93+
code: "{$methodCode}"
94+
purchase_order_number: "{$poNumber}"
95+
}
96+
}) {
97+
cart {
98+
selected_payment_method {
99+
code
100+
purchase_order_number
101+
}
102+
}
103+
}
104+
}
105+
QUERY;
106+
107+
$response = $this->graphQlMutation($query, [], '', $this->getHeaderMap());
108+
109+
self::assertArrayHasKey('setPaymentMethodOnCart', $response);
110+
self::assertArrayHasKey('cart', $response['setPaymentMethodOnCart']);
111+
self::assertArrayHasKey('selected_payment_method', $response['setPaymentMethodOnCart']['cart']);
112+
self::assertArrayHasKey('code', $response['setPaymentMethodOnCart']['cart']['selected_payment_method']);
113+
self::assertArrayHasKey('purchase_order_number', $response['setPaymentMethodOnCart']['cart']['selected_payment_method']);
114+
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
115+
self::assertEquals($poNumber, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['purchase_order_number']);
116+
}
117+
118+
/**
119+
* @return array
120+
*/
121+
public function offlinePaymentMethodDataProvider(): array
122+
{
123+
return [
124+
'check_mo' => [Checkmo::PAYMENT_METHOD_CHECKMO_CODE],
125+
'bank_transfer' => [Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE],
126+
'cash_on_delivery' => [Cashondelivery::PAYMENT_METHOD_CASHONDELIVERY_CODE],
127+
];
128+
}
129+
130+
/**
131+
* @param string $maskedQuoteId
132+
* @param string $methodCode
133+
* @return string
134+
*/
135+
private function getQuery(
136+
string $maskedQuoteId,
137+
string $methodCode
138+
) : string {
139+
return <<<QUERY
140+
mutation {
141+
setPaymentMethodOnCart(input: {
142+
cart_id: "{$maskedQuoteId}",
143+
payment_method: {
144+
code: "{$methodCode}"
145+
}
146+
}) {
147+
cart {
148+
selected_payment_method {
149+
code
150+
}
151+
}
152+
}
153+
}
154+
QUERY;
155+
}
156+
157+
/**
158+
* @param string $username
159+
* @param string $password
160+
* @return array
161+
*/
162+
private function getHeaderMap(string $username = '[email protected]', string $password = 'password'): array
163+
{
164+
$customerToken = $this->customerTokenService->createCustomerAccessToken($username, $password);
165+
$headerMap = ['Authorization' => 'Bearer ' . $customerToken];
166+
return $headerMap;
167+
}
168+
}
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\GraphQl\Quote\Guest;
9+
10+
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
11+
use Magento\OfflinePayments\Model\Banktransfer;
12+
use Magento\OfflinePayments\Model\Cashondelivery;
13+
use Magento\OfflinePayments\Model\Checkmo;
14+
use Magento\OfflinePayments\Model\Purchaseorder;
15+
use Magento\TestFramework\Helper\Bootstrap;
16+
use Magento\TestFramework\TestCase\GraphQlAbstract;
17+
18+
/**
19+
* Test for setting offline payment methods on cart
20+
*/
21+
class SetOfflinePaymentMethodsOnCartTest extends GraphQlAbstract
22+
{
23+
/**
24+
* @var GetMaskedQuoteIdByReservedOrderId
25+
*/
26+
private $getMaskedQuoteIdByReservedOrderId;
27+
28+
/**
29+
* @inheritdoc
30+
*/
31+
protected function setUp()
32+
{
33+
$objectManager = Bootstrap::getObjectManager();
34+
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
35+
}
36+
37+
/**
38+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
39+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
40+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
41+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
42+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/enable_offline_payment_methods.php
43+
*
44+
* @param string $methodCode
45+
* @dataProvider offlinePaymentMethodDataProvider
46+
*/
47+
public function testSetOfflinePaymentMethod(string $methodCode)
48+
{
49+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
50+
51+
$query = $this->getQuery(
52+
$maskedQuoteId,
53+
$methodCode
54+
);
55+
$response = $this->graphQlMutation($query);
56+
57+
self::assertArrayHasKey('setPaymentMethodOnCart', $response);
58+
self::assertArrayHasKey('cart', $response['setPaymentMethodOnCart']);
59+
self::assertArrayHasKey('selected_payment_method', $response['setPaymentMethodOnCart']['cart']);
60+
self::assertArrayHasKey('code', $response['setPaymentMethodOnCart']['cart']['selected_payment_method']);
61+
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
62+
}
63+
64+
/**
65+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
66+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/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+
* @param string $methodCode
72+
*/
73+
public function testSetPurchaseOrderPaymentMethod()
74+
{
75+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
76+
$methodCode = Purchaseorder::PAYMENT_METHOD_PURCHASEORDER_CODE;
77+
$poNumber = 'abc123';
78+
79+
$query = <<<QUERY
80+
mutation {
81+
setPaymentMethodOnCart(input: {
82+
cart_id: "{$maskedQuoteId}",
83+
payment_method: {
84+
code: "{$methodCode}"
85+
purchase_order_number: "{$poNumber}"
86+
}
87+
}) {
88+
cart {
89+
selected_payment_method {
90+
code
91+
purchase_order_number
92+
}
93+
}
94+
}
95+
}
96+
QUERY;
97+
98+
$response = $this->graphQlMutation($query);
99+
100+
self::assertArrayHasKey('setPaymentMethodOnCart', $response);
101+
self::assertArrayHasKey('cart', $response['setPaymentMethodOnCart']);
102+
self::assertArrayHasKey('selected_payment_method', $response['setPaymentMethodOnCart']['cart']);
103+
self::assertArrayHasKey('code', $response['setPaymentMethodOnCart']['cart']['selected_payment_method']);
104+
self::assertArrayHasKey('purchase_order_number', $response['setPaymentMethodOnCart']['cart']['selected_payment_method']);
105+
self::assertEquals($methodCode, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['code']);
106+
self::assertEquals($poNumber, $response['setPaymentMethodOnCart']['cart']['selected_payment_method']['purchase_order_number']);
107+
}
108+
109+
/**
110+
* @return array
111+
*/
112+
public function offlinePaymentMethodDataProvider(): array
113+
{
114+
return [
115+
'check_mo' => [Checkmo::PAYMENT_METHOD_CHECKMO_CODE],
116+
'bank_transfer' => [Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE],
117+
'cash_on_delivery' => [Cashondelivery::PAYMENT_METHOD_CASHONDELIVERY_CODE],
118+
];
119+
}
120+
121+
/**
122+
* @param string $maskedQuoteId
123+
* @param string $methodCode
124+
* @return string
125+
*/
126+
private function getQuery(
127+
string $maskedQuoteId,
128+
string $methodCode
129+
) : string {
130+
return <<<QUERY
131+
mutation {
132+
setPaymentMethodOnCart(input: {
133+
cart_id: "{$maskedQuoteId}",
134+
payment_method: {
135+
code: "{$methodCode}"
136+
}
137+
}) {
138+
cart {
139+
selected_payment_method {
140+
code
141+
}
142+
}
143+
}
144+
}
145+
QUERY;
146+
}
147+
}

0 commit comments

Comments
 (0)