![]() 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/vendor/magento/module-quote/Test/Unit/Model/QuoteRepository/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Quote\Test\Unit\Model\QuoteRepository; use Magento\Customer\Api\AddressRepositoryInterface; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; use Magento\Quote\Api\Data\CartExtensionInterface; use Magento\Quote\Model\Quote; use Magento\Quote\Model\Quote\Address as QuoteAddress; use Magento\Quote\Model\Quote\Address\BillingAddressPersister; use Magento\Quote\Model\Quote\Item as QuoteItem; use Magento\Quote\Model\Quote\Item\CartItemPersister; use Magento\Quote\Model\Quote\ShippingAssignment\ShippingAssignmentPersister; use Magento\Quote\Model\QuoteRepository\SaveHandler; use Magento\Quote\Model\ResourceModel\Quote as QuoteResourceModel; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class SaveHandlerTest extends TestCase { /** * @var SaveHandler */ private $saveHandler; /** * @var ObjectManagerHelper */ private $objectManagerHelper; /** * @var QuoteResourceModel|MockObject */ private $quoteResourceModelMock; /** * @var CartItemPersister|MockObject */ private $cartItemPersisterMock; /** * @var BillingAddressPersister|MockObject */ private $billingAddressPersisterMock; /** * @var ShippingAssignmentPersister|MockObject */ private $shippingAssignmentPersisterMock; /** * @var AddressRepositoryInterface|MockObject */ private $addressRepositoryMock; /** * @var Quote|MockObject */ private $quoteMock; /** * @var QuoteAddress|MockObject */ private $billingAddressMock; /** * @var CartExtensionInterface|MockObject */ private $extensionAttributesMock; protected function setUp(): void { $this->quoteResourceModelMock = $this->getMockBuilder(QuoteResourceModel::class) ->disableOriginalConstructor() ->getMock(); $this->cartItemPersisterMock = $this->getMockBuilder(CartItemPersister::class) ->disableOriginalConstructor() ->getMock(); $this->billingAddressPersisterMock = $this->getMockBuilder(BillingAddressPersister::class) ->disableOriginalConstructor() ->getMock(); $this->shippingAssignmentPersisterMock = $this->getMockBuilder(ShippingAssignmentPersister::class) ->disableOriginalConstructor() ->getMock(); $this->addressRepositoryMock = $this->getMockBuilder(AddressRepositoryInterface::class) ->getMockForAbstractClass(); $this->quoteMock = $this->getMockBuilder(Quote::class) ->disableOriginalConstructor() ->setMethods( [ 'getItems', 'setLastAddedItem', 'getBillingAddress', 'getExtensionAttributes', 'isVirtual', 'collectTotals' ] ) ->getMock(); $this->billingAddressMock = $this->getMockBuilder(QuoteAddress::class) ->setMethods(['getCustomerAddress', 'getCustomerAddressId', 'setCustomerAddressId']) ->disableOriginalConstructor() ->getMock(); $this->extensionAttributesMock = $this->getMockBuilder(CartExtensionInterface::class) ->setMethods(['getShippingAssignments']) ->getMockForAbstractClass(); $this->quoteMock->expects(static::any()) ->method('getBillingAddress') ->willReturn($this->billingAddressMock); $this->quoteMock->expects(static::any()) ->method('getExtensionAttributes') ->willReturn($this->extensionAttributesMock); $this->objectManagerHelper = new ObjectManagerHelper($this); $this->saveHandler = $this->objectManagerHelper->getObject( SaveHandler::class, [ 'quoteResource' => $this->quoteResourceModelMock, 'cartItemPersister' => $this->cartItemPersisterMock, 'billingAddressPersister' => $this->billingAddressPersisterMock, 'shippingAssignmentPersister' => $this->shippingAssignmentPersisterMock, 'addressRepository' => $this->addressRepositoryMock ] ); } public function testSaveForVirtualQuote() { $quoteItemMock = $this->createQuoteItemMock(false); $this->quoteMock->expects(static::atLeastOnce()) ->method('getItems') ->willReturn([$quoteItemMock]); $this->cartItemPersisterMock->expects(static::once()) ->method('save') ->with($this->quoteMock, $quoteItemMock) ->willReturn($quoteItemMock); $this->quoteMock->expects(static::once()) ->method('setLastAddedItem') ->with($quoteItemMock) ->willReturnSelf(); $this->billingAddressMock->expects(static::atLeastOnce()) ->method('getCustomerAddressId') ->willReturn(null); $this->billingAddressMock->expects(static::never()) ->method('getCustomerAddress'); $this->billingAddressPersisterMock->expects(static::once()) ->method('save') ->with($this->quoteMock, $this->billingAddressMock); $this->quoteMock->expects(static::atLeastOnce()) ->method('isVirtual') ->willReturn(true); $this->extensionAttributesMock->expects(static::never()) ->method('getShippingAssignments'); $this->quoteMock->expects(static::atLeastOnce()) ->method('collectTotals') ->willReturnSelf(); $this->quoteResourceModelMock->expects(static::once()) ->method('save') ->with($this->quoteMock) ->willReturnSelf(); $this->assertSame($this->quoteMock, $this->saveHandler->save($this->quoteMock)); } public function testSaveWithNotExistingCustomerAddress() { $customerAddressId = 5; $this->quoteMock->expects(static::atLeastOnce()) ->method('getItems') ->willReturn([]); $this->quoteMock->expects(static::never()) ->method('setLastAddedItem'); $this->billingAddressMock->expects(static::atLeastOnce()) ->method('getCustomerAddressId') ->willReturn($customerAddressId); $this->addressRepositoryMock->expects(static::once()) ->method('getById') ->with($customerAddressId) ->willThrowException(new NoSuchEntityException()); $this->billingAddressMock->expects(static::once()) ->method('setCustomerAddressId') ->willReturn(null); $this->billingAddressPersisterMock->expects(static::once()) ->method('save') ->with($this->quoteMock, $this->billingAddressMock); $this->quoteMock->expects(static::atLeastOnce()) ->method('isVirtual') ->willReturn(true); $this->extensionAttributesMock->expects(static::never()) ->method('getShippingAssignments'); $this->quoteMock->expects(static::atLeastOnce()) ->method('collectTotals') ->willReturnSelf(); $this->quoteResourceModelMock->expects(static::once()) ->method('save') ->with($this->quoteMock) ->willReturnSelf(); $this->assertSame($this->quoteMock, $this->saveHandler->save($this->quoteMock)); } /** * Create quote item mock * * @param bool $isDeleted * @return QuoteItem|MockObject */ private function createQuoteItemMock($isDeleted) { $quoteItemMock = $this->getMockBuilder(QuoteItem::class) ->disableOriginalConstructor() ->getMock(); $quoteItemMock->expects(static::any()) ->method('isDeleted') ->willReturn($isDeleted); return $quoteItemMock; } }