/** * {@inheritdoc} */ public function save(\Magento\Quote\Api\Data\CartItemInterface $cartItem) { /** @var $quoteIdMask QuoteIdMask */ $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartItem->getQuoteId(), 'masked_id'); $cartItem->setQuoteId($quoteIdMask->getQuoteId()); return $this->repository->save($cartItem); }
/** * @return void */ public function testUpdateItemOptions() { $cartId = 11; $itemId = 5; $buyRequest = $this->getMock('Magento\\Framework\\DataObject', [], [], '', false); $cartItemProcessorMock = $this->getMock('\\Magento\\Quote\\Model\\Quote\\Item\\CartItemProcessorInterface'); $this->repository = new \Magento\Quote\Model\Quote\Item\Repository($this->quoteRepositoryMock, $this->productRepositoryMock, $this->itemDataFactoryMock, ['simple' => $cartItemProcessorMock, 'custom_options' => $this->customOptionProcessor]); $requestMock = $this->getMock('\\Magento\\Framework\\DataObject', ['setQty', 'getData'], [], '', false); $cartItemProcessorMock->expects($this->once())->method('convertToBuyRequest')->willReturn($requestMock); $cartItemProcessorMock->expects($this->once())->method('processOptions')->willReturn($this->quoteItemMock); $requestMock->expects($this->once())->method('setQty')->with(12)->willReturnSelf(); $requestMock->expects($this->once())->method('getData')->willReturn([]); $this->quoteMock->expects($this->once())->method('updateItem')->with($itemId, $buyRequest)->willReturn($this->quoteItemMock); $this->dataMock->expects($this->any())->method('getQty')->will($this->returnValue(12)); $this->dataMock->expects($this->once())->method('getItemId')->will($this->returnValue($itemId)); $this->dataMock->expects($this->once())->method('getQuoteId')->willReturn($cartId); $this->quoteRepositoryMock->expects($this->once())->method('getActive')->with($cartId)->will($this->returnValue($this->quoteMock)); $this->quoteMock->expects($this->once())->method('getItemById')->with($itemId)->will($this->returnValue($this->quoteItemMock)); $this->quoteItemMock->expects($this->once())->method('getProduct')->willReturn($this->productMock); $this->productMock->expects($this->once())->method('getTypeId')->willReturn('simple'); $this->productRepositoryMock->expects($this->never())->method('get'); $this->quoteMock->expects($this->once())->method('collectTotals')->will($this->returnValue($this->quoteMock)); $this->quoteRepositoryMock->expects($this->once())->method('save')->with($this->quoteMock); $this->quoteMock->expects($this->once())->method('getAllItems')->willReturn([$this->quoteItemMock]); $this->quoteItemMock->expects($this->any())->method('getId')->willReturn($itemId); $this->quoteItemMock->expects($this->any())->method('getQty')->willReturn(12); $this->customOptionProcessor->expects($this->once())->method('convertToBuyRequest')->with($this->dataMock)->willReturn($buyRequest); $this->assertEquals($this->quoteItemMock, $this->repository->save($this->dataMock)); }