public function testGetBuyRequestOptionByCode() { $optionCode = "info_buyRequest"; $buyRequestQuantity = 23; $optionMock = $this->getMockBuilder('Magento\\Sales\\Model\\Quote\\Item\\Option')->setMethods(['setItem', 'getCode', '__wakeup', 'getValue'])->disableOriginalConstructor()->getMock(); $optionMock->expects($this->once())->method('setItem')->with($this->model)->will($this->returnValue($optionMock)); $optionMock->expects($this->exactly(3))->method('getCode')->will($this->returnValue($optionCode)); $optionMock->expects($this->once())->method('getValue')->will($this->returnValue(serialize(['qty' => $buyRequestQuantity]))); $this->model->addOption($optionMock); $quantity = 12; $this->localeFormat->expects($this->at(0))->method('getNumber')->with($quantity)->will($this->returnValue($quantity)); $this->model->setQty($quantity); $this->assertEquals($quantity, $this->model->getQty()); $buyRequest = $this->model->getBuyRequest(); $this->assertEquals($buyRequestQuantity, $buyRequest->getOriginalQty()); $this->assertEquals($quantity, $buyRequest->getQty()); }
/** * Assign options to item * * @param \Magento\Sales\Model\Quote\Item $item * @param array $options * @return $this */ protected function _assignOptionsToItem(\Magento\Sales\Model\Quote\Item $item, $options) { $optionIds = $item->getOptionByCode('option_ids'); if ($optionIds) { foreach (explode(',', $optionIds->getValue()) as $optionId) { $item->removeOption('option_' . $optionId); } $item->removeOption('option_ids'); } if ($item->getOptionByCode('additional_options')) { $item->removeOption('additional_options'); } $item->save(); if (!empty($options['options'])) { $item->addOption(new \Magento\Framework\Object(array('product' => $item->getProduct(), 'code' => 'option_ids', 'value' => implode(',', array_keys($options['options']))))); foreach ($options['options'] as $optionId => $optionValue) { $item->addOption(new \Magento\Framework\Object(array('product' => $item->getProduct(), 'code' => 'option_' . $optionId, 'value' => $optionValue))); } } if (!empty($options['additional_options'])) { $item->addOption(new \Magento\Framework\Object(array('product' => $item->getProduct(), 'code' => 'additional_options', 'value' => serialize($options['additional_options'])))); } return $this; }
/** * Unset custom_price data for quote item * * @param Item $item * @return void */ protected function unsetCustomPrice(Item $item) { /** @var \Magento\Framework\Object $infoBuyRequest */ $infoBuyRequest = $item->getBuyRequest(); if ($infoBuyRequest->hasData('custom_price')) { $infoBuyRequest->unsetData('custom_price'); $infoBuyRequest->setValue(serialize($infoBuyRequest->getData())); $infoBuyRequest->setCode('info_buyRequest'); $infoBuyRequest->setProduct($item->getProduct()); $item->addOption($infoBuyRequest); } $item->unsetData('custom_price'); $item->unsetData('original_custom_price'); }