GuestCartRepositoryTest.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Api;
  7. use Magento\TestFramework\ObjectManager;
  8. use Magento\TestFramework\TestCase\WebapiAbstract;
  9. class GuestCartRepositoryTest extends WebapiAbstract
  10. {
  11. /**
  12. * @var ObjectManager
  13. */
  14. private $objectManager;
  15. protected function setUp()
  16. {
  17. $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  18. }
  19. protected function tearDown()
  20. {
  21. try {
  22. $cart = $this->getCart('test01');
  23. $cartId = $cart->getId();
  24. $cart->delete();
  25. /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
  26. $quoteIdMask = $this->objectManager->create(\Magento\Quote\Model\QuoteIdMask::class);
  27. $quoteIdMask->load($cartId, 'quote_id');
  28. $quoteIdMask->delete();
  29. } catch (\InvalidArgumentException $e) {
  30. // Do nothing if cart fixture was not used
  31. }
  32. parent::tearDown();
  33. }
  34. /**
  35. * Retrieve quote by given reserved order ID
  36. *
  37. * @param string $reservedOrderId
  38. * @return \Magento\Quote\Model\Quote
  39. * @throws \InvalidArgumentException
  40. */
  41. protected function getCart($reservedOrderId)
  42. {
  43. /** @var $cart \Magento\Quote\Model\Quote */
  44. $cart = $this->objectManager->get(\Magento\Quote\Model\Quote::class);
  45. $cart->load($reservedOrderId, 'reserved_order_id');
  46. if (!$cart->getId()) {
  47. throw new \InvalidArgumentException('There is no quote with provided reserved order ID.');
  48. }
  49. return $cart;
  50. }
  51. /**
  52. * @magentoApiDataFixture Magento/Sales/_files/quote.php
  53. */
  54. public function testGetCart()
  55. {
  56. $cart = $this->getCart('test01');
  57. $cartId = $cart->getId();
  58. /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
  59. $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
  60. ->create(\Magento\Quote\Model\QuoteIdMaskFactory::class)
  61. ->create();
  62. $quoteIdMask->load($cartId, 'quote_id');
  63. $serviceInfo = [
  64. 'rest' => [
  65. 'resourcePath' => '/V1/guest-carts/' . $quoteIdMask->getMaskedId(),
  66. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  67. ],
  68. 'soap' => [
  69. 'service' => 'quoteGuestCartRepositoryV1',
  70. 'serviceVersion' => 'V1',
  71. 'operation' => 'quoteGuestCartRepositoryV1Get',
  72. ],
  73. ];
  74. $requestData = ['cartId' => $quoteIdMask->getMaskedId()];
  75. $cartData = $this->_webApiCall($serviceInfo, $requestData);
  76. $this->assertEquals($cart->getId(), $cartData['id']);
  77. $this->assertEquals($cart->getCreatedAt(), $cartData['created_at']);
  78. $this->assertEquals($cart->getUpdatedAt(), $cartData['updated_at']);
  79. $this->assertEquals($cart->getIsActive(), $cartData['is_active']);
  80. $this->assertEquals($cart->getIsVirtual(), $cartData['is_virtual']);
  81. $this->assertEquals($cart->getOrigOrderId(), $cartData['orig_order_id']);
  82. $this->assertEquals($cart->getItemsCount(), $cartData['items_count']);
  83. $this->assertEquals($cart->getItemsQty(), $cartData['items_qty']);
  84. //following checks will be uncommented when all cart related services are ready
  85. $this->assertContains('customer', $cartData);
  86. $this->assertEquals(true, $cartData['customer_is_guest']);
  87. $this->assertContains('currency', $cartData);
  88. $this->assertEquals($cart->getGlobalCurrencyCode(), $cartData['currency']['global_currency_code']);
  89. $this->assertEquals($cart->getBaseCurrencyCode(), $cartData['currency']['base_currency_code']);
  90. $this->assertEquals($cart->getQuoteCurrencyCode(), $cartData['currency']['quote_currency_code']);
  91. $this->assertEquals($cart->getStoreCurrencyCode(), $cartData['currency']['store_currency_code']);
  92. $this->assertEquals($cart->getBaseToGlobalRate(), $cartData['currency']['base_to_global_rate']);
  93. $this->assertEquals($cart->getBaseToQuoteRate(), $cartData['currency']['base_to_quote_rate']);
  94. $this->assertEquals($cart->getStoreToBaseRate(), $cartData['currency']['store_to_base_rate']);
  95. $this->assertEquals($cart->getStoreToQuoteRate(), $cartData['currency']['store_to_quote_rate']);
  96. }
  97. /**
  98. * @expectedException \Exception
  99. * @expectedExceptionMessage No such entity with
  100. */
  101. public function testGetCartThrowsExceptionIfThereIsNoCartWithProvidedId()
  102. {
  103. $cartId = 9999;
  104. $serviceInfo = [
  105. 'soap' => [
  106. 'service' => 'quoteGuestCartRepositoryV1',
  107. 'serviceVersion' => 'V1',
  108. 'operation' => 'quoteGuestCartRepositoryV1Get',
  109. ],
  110. 'rest' => [
  111. 'resourcePath' => '/V1/guest-carts/' . $cartId,
  112. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  113. ],
  114. ];
  115. $requestData = ['cartId' => $cartId];
  116. $this->_webApiCall($serviceInfo, $requestData);
  117. }
  118. }