Skip to content

Commit 5d9a64e

Browse files
committed
issue #485 [Test coverage] testReSetShippingMethod
1 parent 3666e03 commit 5d9a64e

File tree

2 files changed

+111
-12
lines changed

2 files changed

+111
-12
lines changed

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

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
1414
use Magento\TestFramework\Helper\Bootstrap;
1515
use Magento\TestFramework\TestCase\GraphQlAbstract;
16+
use Magento\Quote\Model\Quote;
1617

1718
/**
1819
* Test for setting shipping methods on cart for customer
@@ -116,6 +117,33 @@ public function testSetMultipleShippingMethods()
116117
$this->markTestIncomplete('https://github.com/magento/graphql-ce/issues/423');
117118
}
118119

120+
/**
121+
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php
122+
*/
123+
public function testReSetShippingMethod()
124+
{
125+
$maskedQuoteId = $this->getMaskedQuoteIdByReversedQuoteId('test_order_1');
126+
$methodCode = 'flatrate';
127+
$carrierCode = 'flatrate';
128+
$quote = $this->getQuoteByReversedQuoteId('test_order_1');
129+
$shippingAddressId = $quote->getShippingAddress()->getId();
130+
131+
$query = $this->prepareMutationQuery($maskedQuoteId, $methodCode, $carrierCode, $shippingAddressId);
132+
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
133+
134+
self::assertArrayHasKey('setShippingMethodsOnCart', $response);
135+
self::assertArrayHasKey('cart', $response['setShippingMethodsOnCart']);
136+
self::assertArrayHasKey('shipping_addresses', $response['setShippingMethodsOnCart']['cart']);
137+
foreach ($response['setShippingMethodsOnCart']['cart']['shipping_addresses'] as $address) {
138+
self::assertArrayHasKey('address_id', $address);
139+
if ($address['address_id'] == $shippingAddressId) {
140+
self::assertArrayHasKey('selected_shipping_method', $address);
141+
self::assertEquals($methodCode, $address['selected_shipping_method']['method_code']);
142+
self::assertEquals($carrierCode, $address['selected_shipping_method']['carrier_code']);
143+
}
144+
}
145+
}
146+
119147
/**
120148
* @param string $maskedQuoteId
121149
* @param string $shippingMethodCode
@@ -135,18 +163,15 @@ private function prepareMutationQuery(
135163
setShippingMethodsOnCart(input:
136164
{
137165
cart_id: "$maskedQuoteId",
138-
shipping_addresses: [{
166+
shipping_methods: [{
139167
cart_address_id: $shippingAddressId
140-
shipping_method: {
141-
method_code: "$shippingMethodCode"
142-
carrier_code: "$shippingCarrierCode"
143-
}
168+
method_code: "$shippingMethodCode"
169+
carrier_code: "$shippingCarrierCode"
144170
}]
145171
}) {
146-
147172
cart {
148-
cart_id,
149173
shipping_addresses {
174+
address_id
150175
selected_shipping_method {
151176
carrier_code
152177
method_code
@@ -174,6 +199,18 @@ private function getMaskedQuoteIdByReversedQuoteId(string $reversedQuoteId): str
174199
return $this->quoteIdToMaskedId->execute((int)$quote->getId());
175200
}
176201

202+
/**
203+
* @param string $reversedQuoteId
204+
* @return Quote
205+
*/
206+
private function getQuoteByReversedQuoteId(string $reversedQuoteId): Quote
207+
{
208+
$quote = $this->quoteFactory->create();
209+
$this->quoteResource->load($quote, $reversedQuoteId, 'reserved_order_id');
210+
211+
return $quote;
212+
}
213+
177214
/**
178215
* @param string $reversedQuoteId
179216
* @param int $customerId

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

Lines changed: 67 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Magento\GraphQl\Quote\Guest;
99

10+
use Magento\Quote\Model\Quote;
1011
use Magento\Quote\Model\QuoteFactory;
1112
use Magento\Quote\Model\QuoteIdToMaskedQuoteIdInterface;
1213
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
@@ -109,6 +110,34 @@ public function testSetMultipleShippingMethods()
109110
$this->markTestIncomplete('https://github.com/magento/graphql-ce/issues/422');
110111
}
111112

113+
/**
114+
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php
115+
*/
116+
public function testReSetShippingMethod()
117+
{
118+
$maskedQuoteId = $this->unAssignCustomerFromQuoteAndShippingAddress('test_order_1');
119+
$methodCode = 'flatrate';
120+
$carrierCode = 'flatrate';
121+
$quote = $this->getQuoteByReversedQuoteId('test_order_1');
122+
$shippingAddress = $quote->getShippingAddress();
123+
$shippingAddressId = $shippingAddress->getId();
124+
$query = $this->prepareMutationQuery($maskedQuoteId, $methodCode, $carrierCode, $shippingAddressId);
125+
126+
$response = $this->graphQlQuery($query);
127+
128+
self::assertArrayHasKey('setShippingMethodsOnCart', $response);
129+
self::assertArrayHasKey('cart', $response['setShippingMethodsOnCart']);
130+
self::assertArrayHasKey('shipping_addresses', $response['setShippingMethodsOnCart']['cart']);
131+
foreach ($response['setShippingMethodsOnCart']['cart']['shipping_addresses'] as $address) {
132+
self::assertArrayHasKey('address_id', $address);
133+
if ($address['address_id'] == $shippingAddressId) {
134+
self::assertArrayHasKey('selected_shipping_method', $address);
135+
self::assertEquals($methodCode, $address['selected_shipping_method']['method_code']);
136+
self::assertEquals($carrierCode, $address['selected_shipping_method']['carrier_code']);
137+
}
138+
}
139+
}
140+
112141
/**
113142
* @param string $maskedQuoteId
114143
* @param string $shippingMethodCode
@@ -128,16 +157,15 @@ private function prepareMutationQuery(
128157
setShippingMethodsOnCart(input:
129158
{
130159
cart_id: "$maskedQuoteId",
131-
shipping_addresses: [{
160+
shipping_methods: [{
132161
cart_address_id: $shippingAddressId
133-
shipping_method: {
134-
method_code: "$shippingMethodCode"
135-
carrier_code: "$shippingCarrierCode"
136-
}
162+
method_code: "$shippingMethodCode"
163+
carrier_code: "$shippingCarrierCode"
137164
}]
138165
}) {
139166
cart {
140167
shipping_addresses {
168+
address_id
141169
selected_shipping_method {
142170
carrier_code
143171
method_code
@@ -152,6 +180,40 @@ private function prepareMutationQuery(
152180
QUERY;
153181
}
154182

183+
/**
184+
* @param string $reversedQuoteId
185+
* @param int $customerId
186+
* @return string
187+
*/
188+
private function unAssignCustomerFromQuoteAndShippingAddress(
189+
string $reversedQuoteId
190+
): string {
191+
/** @var Quote $quote */
192+
$quote = $this->quoteFactory->create();
193+
$this->quoteResource->load($quote, $reversedQuoteId, 'reserved_order_id');
194+
$quote->setCustomerId(0);
195+
196+
$shippingAddress = $quote->getShippingAddress();
197+
$shippingAddress->setCustomerId(0);
198+
$shippingAddress->setCustomerAddressId(0);
199+
200+
$this->quoteResource->save($quote);
201+
202+
return $this->quoteIdToMaskedId->execute((int)$quote->getId());
203+
}
204+
205+
/**
206+
* @param string $reversedQuoteId
207+
* @return Quote
208+
*/
209+
private function getQuoteByReversedQuoteId(string $reversedQuoteId): Quote
210+
{
211+
$quote = $this->quoteFactory->create();
212+
$this->quoteResource->load($quote, $reversedQuoteId, 'reserved_order_id');
213+
214+
return $quote;
215+
}
216+
155217
/**
156218
* @param string $reversedQuoteId
157219
* @return string

0 commit comments

Comments
 (0)