![]() 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/cartforge.co/vendor/magento/module-quote/Test/Unit/Model/Quote/Item/ |
<?php /** * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Quote\Test\Unit\Model\Quote\Item; use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\Catalog\Model\CustomOptions\CustomOptionProcessor; use Magento\Catalog\Model\Product; use Magento\Framework\Exception\CouldNotSaveException; use Magento\Quote\Api\CartRepositoryInterface; use Magento\Quote\Api\Data\CartItemInterfaceFactory; use Magento\Quote\Model\Quote; use Magento\Quote\Model\Quote\Address; use Magento\Quote\Model\Quote\Item; use Magento\Quote\Model\Quote\Item\CartItemOptionsProcessor; use Magento\Quote\Model\Quote\Item\Repository; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class RepositoryTest extends TestCase { /** * @var Repository */ private $repository; /** * @var CartRepositoryInterface|MockObject */ private $quoteRepositoryMock; /** * @var ProductRepositoryInterface|MockObject */ private $productRepositoryMock; /** * @var MockObject */ private $itemMock; /** * @var MockObject */ private $quoteMock; /** * @var MockObject */ private $productMock; /** * @var MockObject */ private $quoteItemMock; /** * @var CartItemInterfaceFactory|MockObject */ private $itemDataFactoryMock; /** * @var CustomOptionProcessor|MockObject */ private $customOptionProcessor; /** * @var Address|MockObject */ private $shippingAddressMock; /** * @var CartItemOptionsProcessor|MockObject */ private $optionsProcessorMock; /** * @return void */ protected function setUp(): void { $this->quoteRepositoryMock = $this->getMockForAbstractClass(CartRepositoryInterface::class); $this->productRepositoryMock = $this->getMockForAbstractClass(ProductRepositoryInterface::class); $this->itemDataFactoryMock = $this->createPartialMock(CartItemInterfaceFactory::class, ['create']); $this->itemMock = $this->createMock(Item::class); $this->quoteMock = $this->createMock(Quote::class); $this->productMock = $this->createMock(Product::class); $this->quoteItemMock = $this->getMockBuilder(Item::class) ->addMethods(['addProduct']) ->onlyMethods(['getId', 'getSku', 'getQty', 'setData', '__wakeUp', 'getProduct']) ->disableOriginalConstructor() ->getMock(); $this->customOptionProcessor = $this->createMock(CustomOptionProcessor::class); $this->shippingAddressMock = $this->getMockBuilder(Address::class) ->addMethods(['setCollectShippingRates']) ->disableOriginalConstructor() ->getMock(); $this->optionsProcessorMock = $this->createMock(CartItemOptionsProcessor::class); $this->repository = new Repository( $this->quoteRepositoryMock, $this->productRepositoryMock, $this->itemDataFactoryMock, $this->optionsProcessorMock, ['custom_options' => $this->customOptionProcessor] ); } /** * @return void */ public function testSave() { $cartId = 13; $itemId = 20; $quoteMock = $this->getMockBuilder(Quote::class) ->addMethods(['getLastAddedItem']) ->onlyMethods(['getItems', 'setItems', 'collectTotals']) ->disableOriginalConstructor() ->getMock(); $this->itemMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); $this->quoteRepositoryMock->expects($this->once()) ->method('getActive') ->with($cartId) ->willReturn($quoteMock); $quoteMock->expects($this->once())->method('getItems')->willReturn([]); $quoteMock->expects($this->once()) ->method('setItems') ->with([$this->itemMock]) ->willReturnSelf(); $this->quoteRepositoryMock->expects($this->once())->method('save')->with($quoteMock); $quoteMock->expects($this->once())->method('collectTotals')->willReturnSelf(); $quoteMock->expects($this->once())->method('getLastAddedItem')->willReturn($itemId); $this->assertEquals($itemId, $this->repository->save($this->itemMock)); } /** * @return void */ public function testDeleteWithInvalidQuoteItem() { $this->expectException('Magento\Framework\Exception\NoSuchEntityException'); $this->expectExceptionMessage('The 11 Cart doesn\'t contain the 5 item.'); $cartId = 11; $itemId = 5; $this->quoteRepositoryMock->expects($this->once()) ->method('getActive')->with($cartId)->willReturn($this->quoteMock); $this->quoteMock->expects($this->once()) ->method('getItemById')->with($itemId)->willReturn(false); $this->quoteMock->expects($this->never())->method('removeItem'); $this->repository->deleteById($cartId, $itemId); } /** * @return void */ public function testDeleteWithCouldNotSaveException() { $this->expectException('Magento\Framework\Exception\CouldNotSaveException'); $this->expectExceptionMessage('The item couldn\'t be removed from the quote.'); $cartId = 11; $itemId = 5; $this->quoteRepositoryMock->expects($this->once()) ->method('getActive') ->with($cartId) ->willReturn($this->quoteMock); $this->quoteMock->expects($this->once()) ->method('getItemById') ->with($itemId) ->willReturn($this->quoteItemMock); $this->quoteMock->expects($this->once()) ->method('removeItem') ->with($itemId) ->willReturn($this->quoteMock); $exceptionMessage = "The item couldn't be removed from the quote."; $exception = new CouldNotSaveException(__($exceptionMessage)); $this->quoteRepositoryMock->expects($this->once()) ->method('save') ->with($this->quoteMock) ->willThrowException($exception); $this->repository->deleteById($cartId, $itemId); } /** * @return void */ public function testGetList() { $productType = 'type'; $quoteMock = $this->createMock(Quote::class); $this->quoteRepositoryMock->expects($this->once())->method('getActive') ->with(33) ->willReturn($quoteMock); $itemMock = $this->createMock(Item::class); $quoteMock->expects($this->once())->method('getAllVisibleItems')->willReturn([$itemMock]); $itemMock->expects($this->once())->method('getProductType')->willReturn($productType); $this->optionsProcessorMock->expects($this->once()) ->method('addProductOptions') ->with($productType, $itemMock) ->willReturn($itemMock); $this->optionsProcessorMock->expects($this->once()) ->method('applyCustomOptions') ->with($itemMock) ->willReturn($itemMock); $this->assertEquals([$itemMock], $this->repository->getList(33)); } /** * @return void */ public function testDeleteById() { $cartId = 11; $itemId = 5; $this->quoteRepositoryMock->expects($this->once()) ->method('getActive') ->with($cartId) ->willReturn($this->quoteMock); $this->quoteMock->expects($this->once()) ->method('getItemById') ->with($itemId) ->willReturn($this->quoteItemMock); $this->quoteMock->expects($this->once())->method('removeItem'); $this->quoteRepositoryMock->expects($this->once())->method('save')->with($this->quoteMock); $this->assertTrue($this->repository->deleteById($cartId, $itemId)); } }