Skip to content

Commit 945a1a7

Browse files
author
Vaha
committed
magento/graphql-ce#893 return null if no selected shipping method
1 parent 830e0c1 commit 945a1a7

File tree

3 files changed

+33
-91
lines changed

3 files changed

+33
-91
lines changed

app/code/Magento/QuoteGraphQl/Model/Resolver/ShippingAddress/SelectedShippingMethod.php

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -34,51 +34,39 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
3434
$carrierTitle = '';
3535
$methodTitle = '';
3636

37-
if (count($rates) > 0 && !empty($address->getShippingMethod())) {
38-
list($carrierCode, $methodCode) = explode('_', $address->getShippingMethod(), 2);
37+
if (!count($rates) || empty($address->getShippingMethod())) {
38+
return null;
39+
}
40+
41+
list($carrierCode, $methodCode) = explode('_', $address->getShippingMethod(), 2);
3942

40-
/** @var Rate $rate */
41-
foreach ($rates as $rate) {
42-
if ($rate->getCode() == $address->getShippingMethod()) {
43-
$carrierTitle = $rate->getCarrierTitle();
44-
$methodTitle = $rate->getMethodTitle();
45-
break;
46-
}
43+
/** @var Rate $rate */
44+
foreach ($rates as $rate) {
45+
if ($rate->getCode() == $address->getShippingMethod()) {
46+
$carrierTitle = $rate->getCarrierTitle();
47+
$methodTitle = $rate->getMethodTitle();
48+
break;
4749
}
50+
}
4851

49-
/** @var Currency $currency */
50-
$currency = $context->getExtensionAttributes()->getStore()->getBaseCurrency();
52+
/** @var Currency $currency */
53+
$currency = $context->getExtensionAttributes()->getStore()->getBaseCurrency();
54+
55+
$data = [
56+
'carrier_code' => $carrierCode,
57+
'method_code' => $methodCode,
58+
'carrier_title' => $carrierTitle,
59+
'method_title' => $methodTitle,
60+
'amount' => [
61+
'value' => $address->getShippingAmount(),
62+
'currency' => $address->getQuote()->getQuoteCurrencyCode(),
63+
],
64+
'base_amount' => [
65+
'value' => $address->getBaseShippingAmount(),
66+
'currency' => $currency->getCode(),
67+
],
68+
];
5169

52-
$data = [
53-
'carrier_code' => $carrierCode,
54-
'method_code' => $methodCode,
55-
'carrier_title' => $carrierTitle,
56-
'method_title' => $methodTitle,
57-
'amount' => [
58-
'value' => $address->getShippingAmount(),
59-
'currency' => $address->getQuote()->getQuoteCurrencyCode(),
60-
],
61-
'base_amount' => [
62-
'value' => $address->getBaseShippingAmount(),
63-
'currency' => $currency->getCode(),
64-
],
65-
];
66-
} else {
67-
$data = [
68-
'carrier_code' => '',
69-
'method_code' => '',
70-
'carrier_title' => $carrierTitle,
71-
'method_title' => $methodTitle,
72-
'amount' => [
73-
'value' => null,
74-
'currency' => null,
75-
],
76-
'base_amount' => [
77-
'value' => null,
78-
'currency' => null,
79-
],
80-
];
81-
}
8270
return $data;
8371
}
8472
}

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

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,7 @@ public function testGetSelectedShippingMethodBeforeSet()
108108

109109
$shippingAddress = current($response['cart']['shipping_addresses']);
110110
self::assertArrayHasKey('selected_shipping_method', $shippingAddress);
111-
112-
self::assertArrayHasKey('carrier_code', $shippingAddress['selected_shipping_method']);
113-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_code']);
114-
115-
self::assertArrayHasKey('method_code', $shippingAddress['selected_shipping_method']);
116-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_code']);
117-
118-
self::assertArrayHasKey('carrier_title', $shippingAddress['selected_shipping_method']);
119-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_title']);
120-
121-
self::assertArrayHasKey('method_title', $shippingAddress['selected_shipping_method']);
122-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_title']);
111+
self::assertNull($shippingAddress['selected_shipping_method']);
123112
}
124113

125114
/**
@@ -182,19 +171,7 @@ public function testGetGetSelectedShippingMethodIfShippingMethodIsNotSet()
182171

183172
$shippingAddress = current($response['cart']['shipping_addresses']);
184173
self::assertArrayHasKey('selected_shipping_method', $shippingAddress);
185-
186-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_code']);
187-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_code']);
188-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_title']);
189-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_title']);
190-
191-
self::assertArrayHasKey('amount', $shippingAddress['selected_shipping_method']);
192-
self::assertNull($shippingAddress['selected_shipping_method']['amount']['value']);
193-
self::assertNull($shippingAddress['selected_shipping_method']['amount']['currency']);
194-
195-
self::assertArrayHasKey('base_amount', $shippingAddress['selected_shipping_method']);
196-
self::assertNull($shippingAddress['selected_shipping_method']['base_amount']['value']);
197-
self::assertNull($shippingAddress['selected_shipping_method']['base_amount']['currency']);
174+
self::assertNull($shippingAddress['selected_shipping_method']);
198175
}
199176

200177
/**

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

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,7 @@ public function testGetSelectedShippingMethodBeforeSet()
9999

100100
$shippingAddress = current($response['cart']['shipping_addresses']);
101101
self::assertArrayHasKey('selected_shipping_method', $shippingAddress);
102-
103-
self::assertArrayHasKey('carrier_code', $shippingAddress['selected_shipping_method']);
104-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_code']);
105-
106-
self::assertArrayHasKey('method_code', $shippingAddress['selected_shipping_method']);
107-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_code']);
108-
109-
self::assertArrayHasKey('carrier_title', $shippingAddress['selected_shipping_method']);
110-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_title']);
111-
112-
self::assertArrayHasKey('method_title', $shippingAddress['selected_shipping_method']);
113-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_title']);
102+
self::assertNull($shippingAddress['selected_shipping_method']);
114103
}
115104

116105
/**
@@ -152,19 +141,7 @@ public function testGetGetSelectedShippingMethodIfShippingMethodIsNotSet()
152141

153142
$shippingAddress = current($response['cart']['shipping_addresses']);
154143
self::assertArrayHasKey('selected_shipping_method', $shippingAddress);
155-
156-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_code']);
157-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_code']);
158-
self::assertEmpty($shippingAddress['selected_shipping_method']['carrier_title']);
159-
self::assertEmpty($shippingAddress['selected_shipping_method']['method_title']);
160-
161-
self::assertArrayHasKey('amount', $shippingAddress['selected_shipping_method']);
162-
self::assertNull($shippingAddress['selected_shipping_method']['amount']['value']);
163-
self::assertNull($shippingAddress['selected_shipping_method']['amount']['currency']);
164-
165-
self::assertArrayHasKey('base_amount', $shippingAddress['selected_shipping_method']);
166-
self::assertNull($shippingAddress['selected_shipping_method']['base_amount']['value']);
167-
self::assertNull($shippingAddress['selected_shipping_method']['base_amount']['currency']);
144+
self::assertNull($shippingAddress['selected_shipping_method']);
168145
}
169146

170147
/**

0 commit comments

Comments
 (0)