Skip to content

Commit 2aca647

Browse files
author
Cari Spruiell
committed
MAGETWO-36276: Create /mine API for CartTotalRepository
- added /mine URLs to webapi.xml for getting cart total - created corresponding api-functional tests
1 parent a12988e commit 2aca647

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

app/code/Magento/Quote/etc/webapi.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,17 +424,31 @@
424424
<resource ref="Magento_Cart::manage" />
425425
</resources>
426426
</route>
427+
428+
<!-- Managing Cart Total -->
427429
<route url="/V1/carts/:cartId/totals" method="GET">
428430
<service class="Magento\Quote\Api\CartTotalRepositoryInterface" method="get"/>
429431
<resources>
430432
<resource ref="Magento_Cart::manage" />
431433
</resources>
432434
</route>
433435

436+
<!-- Managing Guest Cart Total -->
434437
<route url="/V1/guest-carts/:cartId/totals" method="GET">
435438
<service class="Magento\Quote\Api\GuestCartTotalRepositoryInterface" method="get"/>
436439
<resources>
437440
<resource ref="anonymous" />
438441
</resources>
439442
</route>
443+
444+
<!-- Managing My Cart Total -->
445+
<route url="/V1/carts/mine/totals" method="GET">
446+
<service class="Magento\Quote\Api\CartTotalRepositoryInterface" method="get"/>
447+
<resources>
448+
<resource ref="self" />
449+
</resources>
450+
<data>
451+
<parameter name="cartId" force="true">%cart_id%</parameter>
452+
</data>
453+
</route>
440454
</routes>

dev/tests/api-functional/testsuite/Magento/Quote/Api/CartTotalRepositoryTest.php

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,4 +171,71 @@ protected function getQuoteItemTotalsData(\Magento\Quote\Model\Quote $quote)
171171
ItemTotals::KEY_BASE_ROW_TOTAL_INCL_TAX => $item->getBaseRowTotalInclTax(),
172172
];
173173
}
174+
175+
/**
176+
* @magentoApiDataFixture Magento/Checkout/_files/quote_with_shipping_method.php
177+
*/
178+
public function testGetMyTotals()
179+
{
180+
// get customer ID token
181+
/** @var \Magento\Integration\Service\V1\CustomerTokenServiceInterface $customerTokenService */
182+
$customerTokenService = $this->objectManager->create(
183+
'Magento\Integration\Service\V1\CustomerTokenServiceInterface'
184+
);
185+
$token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
186+
187+
/** @var \Magento\Quote\Model\Quote $quote */
188+
$quote = $this->objectManager->create('Magento\Quote\Model\Quote');
189+
$quote->load('test_order_1', 'reserved_order_id');
190+
$cartId = $quote->getId();
191+
192+
$serviceInfo = [
193+
'soap' => [
194+
'service' => 'quoteCartTotalRepositoryV1',
195+
'serviceVersion' => 'V1',
196+
'operation' => 'quoteCartTotalRepositoryV1get',
197+
'token' => $token
198+
],
199+
'rest' => [
200+
'resourcePath' => '/V1/carts/mine/totals',
201+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
202+
'token' => $token
203+
],
204+
];
205+
206+
/** @var \Magento\Quote\Model\Quote\Address $shippingAddress */
207+
$shippingAddress = $quote->getShippingAddress();
208+
209+
$data = [
210+
Totals::KEY_BASE_GRAND_TOTAL => $quote->getBaseGrandTotal(),
211+
Totals::KEY_GRAND_TOTAL => $quote->getGrandTotal(),
212+
Totals::KEY_BASE_SUBTOTAL => $quote->getBaseSubtotal(),
213+
Totals::KEY_SUBTOTAL => $quote->getSubtotal(),
214+
Totals::KEY_BASE_SUBTOTAL_WITH_DISCOUNT => $quote->getBaseSubtotalWithDiscount(),
215+
Totals::KEY_SUBTOTAL_WITH_DISCOUNT => $quote->getSubtotalWithDiscount(),
216+
Totals::KEY_DISCOUNT_AMOUNT => $shippingAddress->getDiscountAmount(),
217+
Totals::KEY_BASE_DISCOUNT_AMOUNT => $shippingAddress->getBaseDiscountAmount(),
218+
Totals::KEY_SHIPPING_AMOUNT => $shippingAddress->getShippingAmount(),
219+
Totals::KEY_BASE_SHIPPING_AMOUNT => $shippingAddress->getBaseShippingAmount(),
220+
Totals::KEY_SHIPPING_DISCOUNT_AMOUNT => $shippingAddress->getShippingDiscountAmount(),
221+
Totals::KEY_BASE_SHIPPING_DISCOUNT_AMOUNT => $shippingAddress->getBaseShippingDiscountAmount(),
222+
Totals::KEY_TAX_AMOUNT => $shippingAddress->getTaxAmount(),
223+
Totals::KEY_BASE_TAX_AMOUNT => $shippingAddress->getBaseTaxAmount(),
224+
Totals::KEY_SHIPPING_TAX_AMOUNT => $shippingAddress->getShippingTaxAmount(),
225+
Totals::KEY_BASE_SHIPPING_TAX_AMOUNT => $shippingAddress->getBaseShippingTaxAmount(),
226+
Totals::KEY_SUBTOTAL_INCL_TAX => $shippingAddress->getSubtotalInclTax(),
227+
Totals::KEY_BASE_SUBTOTAL_INCL_TAX => $shippingAddress->getBaseSubtotalTotalInclTax(),
228+
Totals::KEY_SHIPPING_INCL_TAX => $shippingAddress->getShippingInclTax(),
229+
Totals::KEY_BASE_SHIPPING_INCL_TAX => $shippingAddress->getBaseShippingInclTax(),
230+
Totals::KEY_BASE_CURRENCY_CODE => $quote->getBaseCurrencyCode(),
231+
Totals::KEY_QUOTE_CURRENCY_CODE => $quote->getQuoteCurrencyCode(),
232+
Totals::KEY_ITEMS => [$this->getQuoteItemTotalsData($quote)],
233+
];
234+
235+
$requestData = ['cartId' => $cartId];
236+
237+
$data = $this->formatTotalsData($data);
238+
239+
$this->assertEquals($data, $this->_webApiCall($serviceInfo, $requestData));
240+
}
174241
}

0 commit comments

Comments
 (0)