Skip to content

Commit 65e96da

Browse files
ENGCOM-5678: Add total_quantity to cart response object #843
- Merge Pull Request magento/graphql-ce#843 from pmclain/graphql-ce:issue/827 - Merged commits: 1. 6f66bed 2. d6a2fc8 3. f6f0aef 4. fc5a7ff 5. eae167e
2 parents 7cf99d1 + eae167e commit 65e96da

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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\QuoteGraphQl\Model\Resolver;
9+
10+
use Magento\Framework\Exception\LocalizedException;
11+
use Magento\Framework\GraphQl\Config\Element\Field;
12+
use Magento\Framework\GraphQl\Query\ResolverInterface;
13+
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
14+
use Magento\Quote\Model\Quote;
15+
16+
/**
17+
* @inheritdoc
18+
*/
19+
class CartTotalQuantity implements ResolverInterface
20+
{
21+
/**
22+
* @inheritdoc
23+
*/
24+
public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null)
25+
{
26+
if (!isset($value['model'])) {
27+
throw new LocalizedException(__('"model" value should be specified'));
28+
}
29+
/** @var Quote $cart */
30+
$cart = $value['model'];
31+
32+
return (float)$cart->getItemsSummaryQty();
33+
}
34+
}

app/code/Magento/QuoteGraphQl/etc/schema.graphqls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ type Cart {
197197
available_payment_methods: [AvailablePaymentMethod] @resolver(class: "Magento\\QuoteGraphQl\\Model\\Resolver\\AvailablePaymentMethods") @doc(description: "Available payment methods")
198198
selected_payment_method: SelectedPaymentMethod @resolver(class: "\\Magento\\QuoteGraphQl\\Model\\Resolver\\SelectedPaymentMethod")
199199
prices: CartPrices @resolver(class: "\\Magento\\QuoteGraphQl\\Model\\Resolver\\CartPrices")
200+
total_quantity: Float! @resolver(class: "\\Magento\\QuoteGraphQl\\Model\\Resolver\\CartTotalQuantity")
200201
}
201202

202203
interface CartAddressInterface @typeResolver(class: "\\Magento\\QuoteGraphQl\\Model\\Resolver\\CartAddressTypeResolver") {
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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;
9+
10+
use Magento\TestFramework\Helper\Bootstrap;
11+
use Magento\TestFramework\TestCase\GraphQlAbstract;
12+
13+
/**
14+
* Test for getting total quantity from cart query
15+
*/
16+
class GetCartTotalQuantityTest extends GraphQlAbstract
17+
{
18+
/**
19+
* @var GetMaskedQuoteIdByReservedOrderId
20+
*/
21+
private $getMaskedQuoteIdByReservedOrderId;
22+
23+
protected function setUp()
24+
{
25+
$objectManager = Bootstrap::getObjectManager();
26+
$this->getMaskedQuoteIdByReservedOrderId = $objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
27+
}
28+
29+
/**
30+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
31+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
32+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
33+
*/
34+
public function testGetTotalQuantity()
35+
{
36+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
37+
38+
$query = $this->getQuery($maskedQuoteId);
39+
40+
$response = $this->graphQlQuery($query);
41+
42+
self::assertArrayHasKey('cart', $response);
43+
$cart = $response['cart'];
44+
self::assertArrayHasKey('total_quantity', $cart);
45+
self::assertEquals(2, $cart['total_quantity']);
46+
}
47+
48+
/**
49+
* Create cart query
50+
*
51+
* @param string $maskedQuoteId
52+
* @return string
53+
*/
54+
private function getQuery(string $maskedQuoteId): string
55+
{
56+
return <<<QUERY
57+
{
58+
cart(cart_id: "{$maskedQuoteId}") {
59+
total_quantity
60+
}
61+
}
62+
QUERY;
63+
}
64+
}

0 commit comments

Comments
 (0)