magento2-docker/dev/tests/api-functional/testsuite/Magento/Quote/Api/GuestCartRepositoryTest.php

132 lines
5.1 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Quote\Api;
use Magento\TestFramework\ObjectManager;
use Magento\TestFramework\TestCase\WebapiAbstract;
class GuestCartRepositoryTest extends WebapiAbstract
{
/**
* @var ObjectManager
*/
private $objectManager;
protected function setUp(): void
{
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
}
protected function tearDown(): void
{
try {
$cart = $this->getCart('test01');
$cartId = $cart->getId();
$cart->delete();
/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
$quoteIdMask = $this->objectManager->create(\Magento\Quote\Model\QuoteIdMask::class);
$quoteIdMask->load($cartId, 'quote_id');
$quoteIdMask->delete();
} catch (\InvalidArgumentException $e) {
// Do nothing if cart fixture was not used
}
parent::tearDown();
}
/**
* Retrieve quote by given reserved order ID
*
* @param string $reservedOrderId
* @return \Magento\Quote\Model\Quote
* @throws \InvalidArgumentException
*/
protected function getCart($reservedOrderId)
{
/** @var $cart \Magento\Quote\Model\Quote */
$cart = $this->objectManager->get(\Magento\Quote\Model\Quote::class);
$cart->load($reservedOrderId, 'reserved_order_id');
if (!$cart->getId()) {
throw new \InvalidArgumentException('There is no quote with provided reserved order ID.');
}
return $cart;
}
/**
* @magentoApiDataFixture Magento/Sales/_files/quote.php
*/
public function testGetCart()
{
$cart = $this->getCart('test01');
$cartId = $cart->getId();
/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
->create(\Magento\Quote\Model\QuoteIdMaskFactory::class)
->create();
$quoteIdMask->load($cartId, 'quote_id');
$serviceInfo = [
'rest' => [
'resourcePath' => '/V1/guest-carts/' . $quoteIdMask->getMaskedId(),
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
],
'soap' => [
'service' => 'quoteGuestCartRepositoryV1',
'serviceVersion' => 'V1',
'operation' => 'quoteGuestCartRepositoryV1Get',
],
];
$requestData = ['cartId' => $quoteIdMask->getMaskedId()];
$cartData = $this->_webApiCall($serviceInfo, $requestData);
$this->assertEquals($cart->getId(), $cartData['id']);
$this->assertEquals($cart->getCreatedAt(), $cartData['created_at']);
$this->assertEquals($cart->getUpdatedAt(), $cartData['updated_at']);
$this->assertEquals($cart->getIsActive(), $cartData['is_active']);
$this->assertEquals($cart->getIsVirtual(), $cartData['is_virtual']);
$this->assertEquals($cart->getOrigOrderId(), $cartData['orig_order_id']);
$this->assertEquals($cart->getItemsCount(), $cartData['items_count']);
$this->assertEquals($cart->getItemsQty(), $cartData['items_qty']);
//following checks will be uncommented when all cart related services are ready
$this->assertArrayHasKey('customer', $cartData);
$this->assertTrue($cartData['customer_is_guest']);
$this->assertArrayHasKey('currency', $cartData);
$this->assertEquals($cart->getGlobalCurrencyCode(), $cartData['currency']['global_currency_code']);
$this->assertEquals($cart->getBaseCurrencyCode(), $cartData['currency']['base_currency_code']);
$this->assertEquals($cart->getQuoteCurrencyCode(), $cartData['currency']['quote_currency_code']);
$this->assertEquals($cart->getStoreCurrencyCode(), $cartData['currency']['store_currency_code']);
$this->assertEquals($cart->getBaseToGlobalRate(), $cartData['currency']['base_to_global_rate']);
$this->assertEquals($cart->getBaseToQuoteRate(), $cartData['currency']['base_to_quote_rate']);
$this->assertEquals($cart->getStoreToBaseRate(), $cartData['currency']['store_to_base_rate']);
$this->assertEquals($cart->getStoreToQuoteRate(), $cartData['currency']['store_to_quote_rate']);
}
/**
*/
public function testGetCartThrowsExceptionIfThereIsNoCartWithProvidedId()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No such entity with');
$cartId = 9999;
$serviceInfo = [
'soap' => [
'service' => 'quoteGuestCartRepositoryV1',
'serviceVersion' => 'V1',
'operation' => 'quoteGuestCartRepositoryV1Get',
],
'rest' => [
'resourcePath' => '/V1/guest-carts/' . $cartId,
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
],
];
$requestData = ['cartId' => $cartId];
$this->_webApiCall($serviceInfo, $requestData);
}
}