Skip to content

Commit e54b07d

Browse files
authored
ENGCOM-5436: #758: applied_taxes of empty cart causes 'Internal server error' message on PHP 7.2 #759
2 parents fb58417 + 276e37a commit e54b07d

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

app/code/Magento/QuoteGraphQl/Model/Resolver/CartPrices.php

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private function getAppliedTaxes(Total $total, string $currency): array
7373
$appliedTaxesData = [];
7474
$appliedTaxes = $total->getAppliedTaxes();
7575

76-
if (count($appliedTaxes) === 0) {
76+
if (empty($appliedTaxes)) {
7777
return $appliedTaxesData;
7878
}
7979

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

100644100755
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,33 @@ public function testGetCartTotalsWithTaxApplied()
6464
self::assertEquals('USD', $appliedTaxesResponse[0]['amount']['currency']);
6565
}
6666

67+
/**
68+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
69+
* @magentoApiDataFixture Magento/GraphQl/Tax/_files/tax_rule_for_region_1.php
70+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
71+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/apply_tax_for_simple_product.php
72+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
73+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
74+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_billing_address.php
75+
*/
76+
public function testGetCartTotalsWithEmptyCart()
77+
{
78+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
79+
$query = $this->getQuery($maskedQuoteId);
80+
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
81+
82+
self::assertArrayHasKey('prices', $response['cart']);
83+
$pricesResponse = $response['cart']['prices'];
84+
self::assertEquals(0, $pricesResponse['grand_total']['value']);
85+
self::assertEquals(0, $pricesResponse['subtotal_including_tax']['value']);
86+
self::assertEquals(0, $pricesResponse['subtotal_excluding_tax']['value']);
87+
self::assertEquals(0, $pricesResponse['subtotal_with_discount_excluding_tax']['value']);
88+
89+
$appliedTaxesResponse = $pricesResponse['applied_taxes'];
90+
91+
self::assertCount(0, $appliedTaxesResponse);
92+
}
93+
6794
/**
6895
* @magentoApiDataFixture Magento/Customer/_files/customer.php
6996
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php

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

100644100755
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,32 @@ public function testGetCartTotalsWithTaxApplied()
5959
self::assertEquals('USD', $appliedTaxesResponse[0]['amount']['currency']);
6060
}
6161

62+
/**
63+
* @magentoApiDataFixture Magento/GraphQl/Tax/_files/tax_rule_for_region_1.php
64+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
65+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/apply_tax_for_simple_product.php
66+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php
67+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_shipping_address.php
68+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_billing_address.php
69+
*/
70+
public function testGetCartTotalsWithEmptyCart()
71+
{
72+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
73+
$query = $this->getQuery($maskedQuoteId);
74+
$response = $this->graphQlQuery($query);
75+
76+
self::assertArrayHasKey('prices', $response['cart']);
77+
$pricesResponse = $response['cart']['prices'];
78+
self::assertEquals(0, $pricesResponse['grand_total']['value']);
79+
self::assertEquals(0, $pricesResponse['subtotal_including_tax']['value']);
80+
self::assertEquals(0, $pricesResponse['subtotal_excluding_tax']['value']);
81+
self::assertEquals(0, $pricesResponse['subtotal_with_discount_excluding_tax']['value']);
82+
83+
$appliedTaxesResponse = $pricesResponse['applied_taxes'];
84+
85+
self::assertCount(0, $appliedTaxesResponse);
86+
}
87+
6288
/**
6389
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
6490
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/guest/create_empty_cart.php

0 commit comments

Comments
 (0)