![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/api-functional/testsuite/Magento/Quote/Api/ |
<?php /** * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Quote\Api; use Magento\Catalog\Model\CustomOptions\CustomOptionProcessor; use Magento\Framework\Webapi\Rest\Request; use Magento\Quote\Model\Quote; use Magento\TestFramework\TestCase\WebapiAbstract; class CartItemRepositoryTest extends WebapiAbstract { const SERVICE_VERSION = 'V1'; const SERVICE_NAME = 'quoteCartItemRepositoryV1'; const RESOURCE_PATH = '/V1/carts/'; /** * @var \Magento\TestFramework\ObjectManager */ protected $objectManager; protected function setUp(): void { $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_and_custom_options_saved.php */ public function testGetList() { /** @var Quote $quote */ $quote = $this->objectManager->create(Quote::class); $quote->load('test_order_item_with_items_and_custom_options', 'reserved_order_id'); $cartId = $quote->getId(); $output = []; $customOptionProcessor = $this->objectManager->get(CustomOptionProcessor::class); /** @var \Magento\Quote\Api\Data\CartItemInterface $item */ foreach ($quote->getAllItems() as $item) { $customOptionProcessor->processOptions($item); $data = [ 'item_id' => (int)$item->getItemId(), 'sku' => $item->getSku(), 'name' => $item->getName(), 'price' => (float)$item->getPrice(), 'qty' => (float)$item->getQty(), 'product_type' => $item->getProductType(), 'quote_id' => $item->getQuoteId(), ]; if ($item->getProductOption() !== null) { $customOptions = $item->getProductOption()->getExtensionAttributes()->getCustomOptions(); foreach ($customOptions as $option) { $data['product_option']['extension_attributes']['custom_options'][] = $option->getData(); } } $output[] = $data; } $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/items', 'httpMethod' => Request::HTTP_METHOD_GET, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'GetList', ], ]; $requestData = ["cartId" => $cartId]; $this->assertEquals($output, $this->_webApiCall($serviceInfo, $requestData)); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_address_saved.php * @magentoApiDataFixture Magento/Catalog/_files/product_without_options.php */ public function testAddItem() { /** @var \Magento\Catalog\Model\Product $product */ $product = $this->objectManager->create(\Magento\Catalog\Model\Product::class)->load(2); $productSku = $product->getSku(); /** @var Quote $quote */ $quote = $this->objectManager->create(Quote::class); $quote->load('test_order_1', 'reserved_order_id'); $cartId = $quote->getId(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/items', 'httpMethod' => Request::HTTP_METHOD_POST, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'Save', ], ]; $requestData = [ "cartItem" => [ "sku" => $productSku, "qty" => 7, "quote_id" => $cartId, ], ]; $this->_webApiCall($serviceInfo, $requestData); $this->assertTrue($quote->hasProductId(2)); $this->assertEquals(7, $quote->getItemByProduct($product)->getQty()); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php */ public function testRemoveItem() { /** @var Quote $quote */ $quote = $this->objectManager->create(Quote::class); $quote->load('test_order_item_with_items', 'reserved_order_id'); $cartId = $quote->getId(); $product = $this->objectManager->create(\Magento\Catalog\Model\Product::class); $productId = $product->getIdBySku('simple_one'); $product->load($productId); $itemId = $quote->getItemByProduct($product)->getId(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/items/' . $itemId, 'httpMethod' => Request::HTTP_METHOD_DELETE, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'DeleteById', ], ]; $requestData = [ "cartId" => $cartId, "itemId" => $itemId, ]; $this->assertTrue($this->_webApiCall($serviceInfo, $requestData)); $quote = $this->objectManager->create(Quote::class); $quote->load('test_order_item_with_items', 'reserved_order_id'); $this->assertFalse($quote->hasProductId($productId)); } /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php */ public function testUpdateItem() { /** @var Quote $quote */ $quote = $this->objectManager->create(Quote::class); $quote->load('test_order_item_with_items', 'reserved_order_id'); $cartId = $quote->getId(); $product = $this->objectManager->create(\Magento\Catalog\Model\Product::class); $productId = $product->getIdBySku('simple_one'); $product->load($productId); $itemId = $quote->getItemByProduct($product)->getId(); $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH . $cartId . '/items/' . $itemId, 'httpMethod' => Request::HTTP_METHOD_PUT, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'Save', ], ]; if (TESTS_WEB_API_ADAPTER == self::ADAPTER_SOAP) { $requestData = [ "cartItem" => [ "qty" => 5, "quote_id" => $cartId, "itemId" => $itemId, ], ]; } else { $requestData = [ "cartItem" => [ "qty" => 5, "quote_id" => $cartId, ], ]; } $this->_webApiCall($serviceInfo, $requestData); $quote = $this->objectManager->create(Quote::class); $quote->load('test_order_item_with_items', 'reserved_order_id'); $this->assertTrue($quote->hasProductId(1)); $item = $quote->getItemByProduct($product); $this->assertEquals(5, $item->getQty()); $this->assertEquals($itemId, $item->getItemId()); } }