/** * @covers \Magento\Catalog\Model\Product::setOptions * @covers \Magento\Catalog\Model\Product::getOptionById * @covers \Magento\Catalog\Model\Product::getOptions */ public function testOptionApi() { $this->assertNull($this->_model->getOptions()); $optionId = uniqid(); $option = $this->objectManager->create('Magento\\Catalog\\Model\\Product\\Option', ['data' => ['key' => 'value']]); $option->setId($optionId); $this->_model->setOptions([$option]); $this->assertSame($option, $this->_model->getOptionById($optionId)); $this->assertEquals([$option], $this->_model->getOptions()); }
/** * @covers \Magento\Catalog\Model\Product::addOption * @covers \Magento\Catalog\Model\Product::getOptionById * @covers \Magento\Catalog\Model\Product::getOptions */ public function testOptionApi() { $this->assertEquals([], $this->_model->getOptions()); $optionId = uniqid(); $option = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\Product\\Option', ['data' => ['key' => 'value']]); $option->setId($optionId); $this->_model->addOption($option); $this->assertSame($option, $this->_model->getOptionById($optionId)); $this->assertEquals([$optionId => $option], $this->_model->getOptions()); }
/** * Apply options price * * @param Product $product * @param int $qty * @param float $finalPrice * @return float * @deprecated (MAGETWO-31469) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ protected function _applyOptionsPrice($product, $qty, $finalPrice) { $optionIds = $product->getCustomOption('option_ids'); if ($optionIds) { $basePrice = $finalPrice; foreach (explode(',', $optionIds->getValue()) as $optionId) { if ($option = $product->getOptionById($optionId)) { $confItemOption = $product->getCustomOption('option_' . $option->getId()); $group = $option->groupFactory($option->getType())->setOption($option)->setConfigurationItemOption($confItemOption); $finalPrice += $group->getOptionPrice($confItemOption->getValue(), $basePrice); } } } return $finalPrice; }
/** * Default action to get sku of product with option * * @param \Magento\Catalog\Model\Product $product Product with Custom Options * @param string $sku Product SKU without option * @return string */ public function getOptionSku($product, $sku = '') { $skuDelimiter = '-'; if (empty($sku)) { $sku = $product->getData('sku'); } $optionIds = $product->getCustomOption('option_ids'); if ($optionIds) { foreach (explode(',', $optionIds->getValue()) as $optionId) { $option = $product->getOptionById($optionId); if ($option) { $confItemOption = $product->getCustomOption(self::OPTION_PREFIX . $optionId); $group = $option->groupFactory($option->getType())->setOption($option)->setListener(new \Magento\Framework\DataObject()); $optionSku = $group->getOptionSku($confItemOption->getValue(), $skuDelimiter); if ($optionSku) { $sku .= $skuDelimiter . $optionSku; } if ($group->getListener()->getHasError()) { $product->setHasError(true)->setMessage($group->getListener()->getMessage()); } } } } return $sku; }
/** * {@inheritdoc} */ public function getOptionById($optionId) { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getOptionById'); if (!$pluginInfo) { return parent::getOptionById($optionId); } else { return $this->___callPlugins('getOptionById', func_get_args(), $pluginInfo); } }