Skip to content

Commit 7a7fc81

Browse files
committed
PWA-1576: GQL gaps for Admin configuration
- extend storeConfig query to include Zero Subtotal and Check/Money Order config values - add test to verify
1 parent ed2ffad commit 7a7fc81

File tree

7 files changed

+295
-0
lines changed

7 files changed

+295
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# PaymentGraphQl
2+
3+
**PaymentGraphQl** provides type information for the GraphQl module
4+
to generate payment fields information endpoints.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "magento/module-payment-graph-ql",
3+
"description": "N/A",
4+
"type": "magento2-module",
5+
"require": {
6+
"php": "~7.3.0||~7.4.0",
7+
"magento/framework": "*"
8+
},
9+
"suggest": {
10+
"magento/module-store-graph-ql": "*"
11+
},
12+
"license": [
13+
"OSL-3.0",
14+
"AFL-3.0"
15+
],
16+
"autoload": {
17+
"files": [
18+
"registration.php"
19+
],
20+
"psr-4": {
21+
"Magento\\PaymentGraphQl\\": ""
22+
}
23+
}
24+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
9+
<type name="Magento\StoreGraphQl\Model\Resolver\Store\StoreConfigDataProvider">
10+
<arguments>
11+
<argument name="extendedConfigData" xsi:type="array">
12+
<item name="zero_subtotal_enabled" xsi:type="string">payment/free/active</item>
13+
<item name="zero_subtotal_title" xsi:type="string">payment/free/title</item>
14+
<item name="zero_subtotal_new_order_status" xsi:type="string">payment/free/order_status</item>
15+
<item name="zero_subtotal_payment_action" xsi:type="string">payment/free/payment_action</item>
16+
<item name="zero_subtotal_payment_from_applicable_countries" xsi:type="string">payment/free/allowspecific</item>
17+
<item name="zero_subtotal_payment_from_specific_countries" xsi:type="string">payment/free/specificcountry</item>
18+
<item name="zero_subtotal_sort_order" xsi:type="string">payment/free/sort_order</item>
19+
<item name="check_money_order_enabled" xsi:type="string">payment/checkmo/active</item>
20+
<item name="check_money_order_title" xsi:type="string">payment/checkmo/title</item>
21+
<item name="check_money_order_new_order_status" xsi:type="string">payment/checkmo/order_status</item>
22+
<item name="check_money_order_payment_from_applicable_countries" xsi:type="string">payment/checkmo/allowspecific</item>
23+
<item name="check_money_order_payment_from_specific_countries" xsi:type="string">payment/checkmo/specificcountry</item>
24+
<item name="check_money_order_make_check_payable_to" xsi:type="string">payment/checkmo/payable_to</item>
25+
<item name="check_money_order_send_check_to" xsi:type="string">payment/checkmo/mailing_address</item>
26+
<item name="check_money_order_min_order_total" xsi:type="string">payment/checkmo/min_order_total</item>
27+
<item name="check_money_order_max_order_total" xsi:type="string">payment/checkmo/max_order_total</item>
28+
<item name="check_money_order_sort_order" xsi:type="string">payment/checkmo/sort_order</item>
29+
</argument>
30+
</arguments>
31+
</type>
32+
</config>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
9+
<module name="Magento_PaymentGraphQl"/>
10+
</config>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Copyright © Magento, Inc. All rights reserved.
2+
# See COPYING.txt for license details.
3+
type StoreConfig @doc(description: "The type contains information about a store config") {
4+
zero_subtotal_enabled: String @doc(description: "Zero Subtotal payment method functionality status: enabled/disabled")
5+
zero_subtotal_title: String @doc(description: "Zero Subtotal payment method title on frontend")
6+
zero_subtotal_new_order_status: String @doc(description: "Status of new orders placed using the Zero Subtotal payment method")
7+
zero_subtotal_payment_action: String @doc(description: "Automatically invoice all items that have a zero balance")
8+
zero_subtotal_payment_from_applicable_countries: String @doc(description: "Which countries may use the Zero Subtotal payment method: All Allowed Countries/Specific Countries")
9+
zero_subtotal_payment_from_specific_countries: String @doc(description: "Specific countries allowed to use the Zero Subtotal payment method")
10+
zero_subtotal_sort_order: String @doc(description: "The position of the Zero Subtotal payment method in the list of available payment methods during checkout")
11+
check_money_order_enabled: String @doc(description: "Check/Money Order payment method status: enabled/disabled")
12+
check_money_order_title: String @doc(description: "Check/Money Order payment method title on frontend")
13+
check_money_order_new_order_status: String @doc(description: "Status of new orders placed using the Check/Money Order payment method")
14+
check_money_order_payment_from_applicable_countries: String @doc(description: "Which countries may use the Check/Money Order payment method: All Allowed Countries/Specific Countries")
15+
check_money_order_payment_from_specific_countries: String @doc(description: "Specific countries allowed to use the Check/Money Order payment method")
16+
check_money_order_make_check_payable_to: String @doc(description: "The name of the party to whom the check must be payable")
17+
check_money_order_send_check_to: String @doc(description: "The street address or PO Box where the checks are mailed")
18+
check_money_order_min_order_total: String @doc(description: "Minimum order amount required to qualify for the Check/Money Order payment method")
19+
check_money_order_max_order_total: String @doc(description: "Maximum order amount required to qualify for the Check/Money Order payment method")
20+
check_money_order_sort_order: String @doc(description: "The position of the Check/Money Order payment method in the list of available payment methods during checkout")
21+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
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+
use Magento\Framework\Component\ComponentRegistrar;
9+
10+
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Magento_PaymentGraphQl', __DIR__);
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
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\PaymentGraphQl;
9+
10+
use Magento\TestFramework\TestCase\GraphQlAbstract;
11+
12+
/**
13+
* Test coverage for zero subtotal and check/money order payment methods in the store config
14+
*
15+
* @magentoDbIsolation enabled
16+
*/
17+
class StoreConfigTest extends GraphQlAbstract
18+
{
19+
const STORE_CONFIG_QUERY = <<<QUERY
20+
{
21+
storeConfig {
22+
zero_subtotal_enabled
23+
zero_subtotal_title
24+
zero_subtotal_new_order_status
25+
zero_subtotal_payment_action
26+
zero_subtotal_payment_from_applicable_countries
27+
zero_subtotal_payment_from_specific_countries
28+
zero_subtotal_sort_order
29+
check_money_order_enabled
30+
check_money_order_title
31+
check_money_order_new_order_status
32+
check_money_order_payment_from_applicable_countries
33+
check_money_order_payment_from_specific_countries
34+
check_money_order_make_check_payable_to
35+
check_money_order_send_check_to
36+
check_money_order_min_order_total
37+
check_money_order_max_order_total
38+
check_money_order_sort_order
39+
}
40+
}
41+
QUERY;
42+
43+
/**
44+
* Test that storeConfig is correct for default configuration values.
45+
*
46+
* @throws \Exception
47+
*/
48+
public function testStoreConfigZeroSubtotalCheckMoneyOrderDefaultValues()
49+
{
50+
$response = $this->graphQlQuery(self::STORE_CONFIG_QUERY);
51+
self::assertArrayHasKey('zero_subtotal_enabled', $response['storeConfig']);
52+
self::assertArrayHasKey('zero_subtotal_title', $response['storeConfig']);
53+
self::assertArrayHasKey('zero_subtotal_new_order_status', $response['storeConfig']);
54+
self::assertArrayHasKey('zero_subtotal_payment_action', $response['storeConfig']);
55+
self::assertArrayHasKey('zero_subtotal_payment_from_applicable_countries', $response['storeConfig']);
56+
self::assertArrayHasKey('zero_subtotal_payment_from_specific_countries', $response['storeConfig']);
57+
self::assertArrayHasKey('zero_subtotal_sort_order', $response['storeConfig']);
58+
self::assertArrayHasKey('check_money_order_enabled', $response['storeConfig']);
59+
self::assertArrayHasKey('check_money_order_title', $response['storeConfig']);
60+
self::assertArrayHasKey('check_money_order_new_order_status', $response['storeConfig']);
61+
self::assertArrayHasKey('check_money_order_payment_from_applicable_countries', $response['storeConfig']);
62+
self::assertArrayHasKey('check_money_order_payment_from_specific_countries', $response['storeConfig']);
63+
self::assertArrayHasKey('check_money_order_make_check_payable_to', $response['storeConfig']);
64+
self::assertArrayHasKey('check_money_order_send_check_to', $response['storeConfig']);
65+
self::assertArrayHasKey('check_money_order_min_order_total', $response['storeConfig']);
66+
self::assertArrayHasKey('check_money_order_max_order_total', $response['storeConfig']);
67+
self::assertArrayHasKey('check_money_order_sort_order', $response['storeConfig']);
68+
69+
self::assertEquals('1', $response['storeConfig']['zero_subtotal_enabled']);
70+
self::assertEquals('No Payment Information Required', $response['storeConfig']['zero_subtotal_title']);
71+
self::assertEquals('pending', $response['storeConfig']['zero_subtotal_new_order_status']);
72+
self::assertEquals('authorize_capture', $response['storeConfig']['zero_subtotal_payment_action']);
73+
self::assertEquals('0', $response['storeConfig']['zero_subtotal_payment_from_applicable_countries']);
74+
self::assertNull($response['storeConfig']['zero_subtotal_payment_from_specific_countries']);
75+
self::assertEquals('1', $response['storeConfig']['zero_subtotal_sort_order']);
76+
self::assertEquals('1', $response['storeConfig']['check_money_order_enabled']);
77+
self::assertEquals('Check / Money order', $response['storeConfig']['check_money_order_title']);
78+
self::assertEquals('pending', $response['storeConfig']['check_money_order_new_order_status']);
79+
self::assertEquals('0', $response['storeConfig']['check_money_order_payment_from_applicable_countries']);
80+
self::assertNull($response['storeConfig']['check_money_order_payment_from_specific_countries']);
81+
self::assertNull($response['storeConfig']['check_money_order_make_check_payable_to']);
82+
self::assertNull($response['storeConfig']['check_money_order_send_check_to']);
83+
self::assertNull($response['storeConfig']['check_money_order_min_order_total']);
84+
self::assertNull($response['storeConfig']['check_money_order_max_order_total']);
85+
self::assertNull($response['storeConfig']['check_money_order_sort_order']);
86+
}
87+
88+
/**
89+
* Test that storeConfig is correct when zero subtotal and check/money order payment methods are disabled.
90+
*
91+
* @magentoConfigFixture default/payment/free/active 0
92+
* @magentoConfigFixture default/payment/checkmo/active 0
93+
*
94+
* @throws \Exception
95+
*/
96+
public function testStoreConfigZeroSubtotalCheckMoneyOrderDisabled()
97+
{
98+
$response = $this->graphQlQuery(self::STORE_CONFIG_QUERY);
99+
self::assertArrayHasKey('zero_subtotal_enabled', $response['storeConfig']);
100+
self::assertArrayHasKey('zero_subtotal_title', $response['storeConfig']);
101+
self::assertArrayHasKey('zero_subtotal_new_order_status', $response['storeConfig']);
102+
self::assertArrayHasKey('zero_subtotal_payment_action', $response['storeConfig']);
103+
self::assertArrayHasKey('zero_subtotal_payment_from_applicable_countries', $response['storeConfig']);
104+
self::assertArrayHasKey('zero_subtotal_payment_from_specific_countries', $response['storeConfig']);
105+
self::assertArrayHasKey('zero_subtotal_sort_order', $response['storeConfig']);
106+
self::assertArrayHasKey('check_money_order_enabled', $response['storeConfig']);
107+
self::assertArrayHasKey('check_money_order_title', $response['storeConfig']);
108+
self::assertArrayHasKey('check_money_order_new_order_status', $response['storeConfig']);
109+
self::assertArrayHasKey('check_money_order_payment_from_applicable_countries', $response['storeConfig']);
110+
self::assertArrayHasKey('check_money_order_payment_from_specific_countries', $response['storeConfig']);
111+
self::assertArrayHasKey('check_money_order_make_check_payable_to', $response['storeConfig']);
112+
self::assertArrayHasKey('check_money_order_send_check_to', $response['storeConfig']);
113+
self::assertArrayHasKey('check_money_order_min_order_total', $response['storeConfig']);
114+
self::assertArrayHasKey('check_money_order_max_order_total', $response['storeConfig']);
115+
self::assertArrayHasKey('check_money_order_sort_order', $response['storeConfig']);
116+
117+
self::assertEquals('0', $response['storeConfig']['zero_subtotal_enabled']);
118+
self::assertEquals('No Payment Information Required', $response['storeConfig']['zero_subtotal_title']);
119+
self::assertEquals('pending', $response['storeConfig']['zero_subtotal_new_order_status']);
120+
self::assertEquals('authorize_capture', $response['storeConfig']['zero_subtotal_payment_action']);
121+
self::assertEquals('0', $response['storeConfig']['zero_subtotal_payment_from_applicable_countries']);
122+
self::assertNull($response['storeConfig']['zero_subtotal_payment_from_specific_countries']);
123+
self::assertEquals('1', $response['storeConfig']['zero_subtotal_sort_order']);
124+
self::assertEquals('0', $response['storeConfig']['check_money_order_enabled']);
125+
self::assertEquals('Check / Money order', $response['storeConfig']['check_money_order_title']);
126+
self::assertEquals('pending', $response['storeConfig']['check_money_order_new_order_status']);
127+
self::assertEquals('0', $response['storeConfig']['check_money_order_payment_from_applicable_countries']);
128+
self::assertNull($response['storeConfig']['check_money_order_payment_from_specific_countries']);
129+
self::assertNull($response['storeConfig']['check_money_order_make_check_payable_to']);
130+
self::assertNull($response['storeConfig']['check_money_order_send_check_to']);
131+
self::assertNull($response['storeConfig']['check_money_order_min_order_total']);
132+
self::assertNull($response['storeConfig']['check_money_order_max_order_total']);
133+
self::assertNull($response['storeConfig']['check_money_order_sort_order']);
134+
}
135+
136+
/**
137+
* Test that storeConfig is correct for custom values.
138+
*
139+
* @magentoConfigFixture default/payment/free/title Test Zero Subtotal Title
140+
* @magentoConfigFixture default/payment/free/order_status processing
141+
* @magentoConfigFixture default/payment/free/allowspecific 1
142+
* @magentoConfigFixture default/payment/free/specificcountry DZ
143+
* @magentoConfigFixture default/payment/free/sort_order 5
144+
* @magentoConfigFixture default/payment/checkmo/title Test Check / Money Order Title
145+
* @magentoConfigFixture default/payment/checkmo/allowspecific 1
146+
* @magentoConfigFixture default/payment/checkmo/specificcountry BR
147+
* @magentoConfigFixture default/payment/checkmo/payable_to Test Payee
148+
* @magentoConfigFixture default/payment/checkmo/mailing_address Test Address
149+
* @magentoConfigFixture default/payment/checkmo/min_order_total 5.00
150+
* @magentoConfigFixture default/payment/checkmo/max_order_total 5555.00
151+
* @magentoConfigFixture default/payment/checkmo/sort_order 7
152+
*
153+
* @throws \Exception
154+
*/
155+
public function testStoreConfigZeroSubtotalCheckMoneyOrderCustom()
156+
{
157+
$response = $this->graphQlQuery(self::STORE_CONFIG_QUERY);
158+
self::assertArrayHasKey('zero_subtotal_enabled', $response['storeConfig']);
159+
self::assertArrayHasKey('zero_subtotal_title', $response['storeConfig']);
160+
self::assertArrayHasKey('zero_subtotal_new_order_status', $response['storeConfig']);
161+
self::assertArrayHasKey('zero_subtotal_payment_action', $response['storeConfig']);
162+
self::assertArrayHasKey('zero_subtotal_payment_from_applicable_countries', $response['storeConfig']);
163+
self::assertArrayHasKey('zero_subtotal_payment_from_specific_countries', $response['storeConfig']);
164+
self::assertArrayHasKey('zero_subtotal_sort_order', $response['storeConfig']);
165+
self::assertArrayHasKey('check_money_order_enabled', $response['storeConfig']);
166+
self::assertArrayHasKey('check_money_order_title', $response['storeConfig']);
167+
self::assertArrayHasKey('check_money_order_new_order_status', $response['storeConfig']);
168+
self::assertArrayHasKey('check_money_order_payment_from_applicable_countries', $response['storeConfig']);
169+
self::assertArrayHasKey('check_money_order_payment_from_specific_countries', $response['storeConfig']);
170+
self::assertArrayHasKey('check_money_order_make_check_payable_to', $response['storeConfig']);
171+
self::assertArrayHasKey('check_money_order_send_check_to', $response['storeConfig']);
172+
self::assertArrayHasKey('check_money_order_min_order_total', $response['storeConfig']);
173+
self::assertArrayHasKey('check_money_order_max_order_total', $response['storeConfig']);
174+
self::assertArrayHasKey('check_money_order_sort_order', $response['storeConfig']);
175+
176+
self::assertEquals('1', $response['storeConfig']['zero_subtotal_enabled']);
177+
self::assertEquals('Test Zero Subtotal Title', $response['storeConfig']['zero_subtotal_title']);
178+
self::assertEquals('processing', $response['storeConfig']['zero_subtotal_new_order_status']);
179+
self::assertEquals('authorize_capture', $response['storeConfig']['zero_subtotal_payment_action']);
180+
self::assertEquals('1', $response['storeConfig']['zero_subtotal_payment_from_applicable_countries']);
181+
self::assertEquals('DZ', $response['storeConfig']['zero_subtotal_payment_from_specific_countries']);
182+
self::assertEquals('5', $response['storeConfig']['zero_subtotal_sort_order']);
183+
self::assertEquals('1', $response['storeConfig']['check_money_order_enabled']);
184+
self::assertEquals('Test Check / Money Order Title', $response['storeConfig']['check_money_order_title']);
185+
self::assertEquals('pending', $response['storeConfig']['check_money_order_new_order_status']);
186+
self::assertEquals('1', $response['storeConfig']['check_money_order_payment_from_applicable_countries']);
187+
self::assertEquals('BR', $response['storeConfig']['check_money_order_payment_from_specific_countries']);
188+
self::assertEquals('Test Payee', $response['storeConfig']['check_money_order_make_check_payable_to']);
189+
self::assertEquals('Test Address', $response['storeConfig']['check_money_order_send_check_to']);
190+
self::assertEquals('5.00', $response['storeConfig']['check_money_order_min_order_total']);
191+
self::assertEquals('5555.00', $response['storeConfig']['check_money_order_max_order_total']);
192+
self::assertEquals('7', $response['storeConfig']['check_money_order_sort_order']);
193+
}
194+
}

0 commit comments

Comments
 (0)