/** * @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)); }
public function testProcessCustomOptions() { $optionId = 23; $quoteItemOption = $this->getMockBuilder('Magento\\Quote\\Model\\Quote\\Item\\Option')->disableOriginalConstructor()->getMock(); $this->cartItem->expects($this->atLeastOnce())->method('getOptionByCode')->with('info_buyRequest')->willReturn($quoteItemOption); $quoteItemOption->expects($this->once())->method('getValue')->willReturn('a:1:{s:7:"options";a:1:{i:' . $optionId . ';a:2:{i:0;s:1:"5";i:1;s:1:"6";}}} '); $this->customOptionFactory->expects($this->once())->method('create')->willReturn($this->customOption); $this->customOption->expects($this->once())->method('setOptionId')->with($optionId); $this->customOption->expects($this->once())->method('setOptionValue')->with('5,6'); $this->cartItem->expects($this->atLeastOnce())->method('getProductOption')->willReturn(false); $this->productOptionFactory->expects($this->once())->method('create')->willReturn($this->productOption); $this->productOption->expects($this->once())->method('getExtensionAttributes')->willReturn(false); $this->extensionFactory->expects($this->once())->method('create')->willReturn($this->extensibleAttribute); $this->extensibleAttribute->expects($this->once())->method('setCustomOptions')->with([$optionId => $this->customOption]); $this->productOption->expects($this->once())->method('setExtensionAttributes')->with($this->extensibleAttribute); $this->cartItem->expects($this->once())->method('setProductOption')->with($this->productOption); $this->assertSame($this->cartItem, $this->processor->processOptions($this->cartItem)); }