132 lines
5.1 KiB
PHP
Executable File
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);
|
|
}
|
|
}
|