/**
  * @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());
 }
 /**
  * @magentoAppArea frontend
  */
 public function testReset()
 {
     $model = $this->_model;
     $this->_assertEmpty($model);
     $this->_model->setData('key', 'value');
     $this->_model->reset();
     $this->_assertEmpty($model);
     $this->_model->setOrigData('key', 'value');
     $this->_model->reset();
     $this->_assertEmpty($model);
     $this->_model->addCustomOption('key', 'value');
     $this->_model->reset();
     $this->_assertEmpty($model);
     $this->_model->addOption(\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\Product\\Option'));
     $this->_model->reset();
     $this->_assertEmpty($model);
     $this->_model->canAffectOptions(true);
     $this->_model->reset();
     $this->_assertEmpty($model);
 }
 /**
  * {@inheritdoc}
  */
 public function addOption(\Magento\Catalog\Model\Product\Option $option)
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'addOption');
     if (!$pluginInfo) {
         return parent::addOption($option);
     } else {
         return $this->___callPlugins('addOption', func_get_args(), $pluginInfo);
     }
 }