/**
  * @return void
  */
 public function testImportProductOptionPresetConfiguration()
 {
     $product = $this->createProductConcrete();
     $optionShade = $this->createOptionTypeWithValue('SHADE', 'VIOLET');
     $optionFitting = $this->createOptionTypeWithValue('FITTING', 'CLASSIC');
     $productOptionShade = $this->createProductOptionTypeUsage($product, $optionShade);
     $productOptionValueUsageViolet = (new SpyProductOptionValueUsage())->setSpyProductOptionValue($optionShade->getSpyProductOptionValues()[0]);
     $productOptionShade->addSpyProductOptionValueUsage($productOptionValueUsageViolet);
     $productOptionShade->save();
     $productOptionFitting = $this->createProductOptionTypeUsage($product, $optionFitting);
     $productOptionValueUsageSmall = (new SpyProductOptionValueUsage())->setSpyProductOptionValue($optionFitting->getSpyProductOptionValues()[0]);
     $productOptionFitting->addSpyProductOptionValueUsage($productOptionValueUsageSmall);
     $productOptionFitting->save();
     $this->facade->importPresetConfiguration($product->getSku(), ['VIOLET', 'CLASSIC']);
     $this->facade->flushBuffer();
     $result = SpyProductOptionConfigurationPresetQuery::create()->findByFkProduct($product->getIdProduct());
     $this->assertEquals(1, $result->count());
     $values = $result[0]->getSpyProductOptionConfigurationPresetValues();
     foreach ($values as $value) {
         $this->assertContains($value->getFkProductOptionValueUsage(), [$productOptionValueUsageSmall->getIdProductOptionValueUsage(), $productOptionValueUsageViolet->getIdProductOptionValueUsage()]);
     }
     $this->performAssertionOnTouchTable($product->getFkProductAbstract());
 }
 /**
  * @return void
  */
 protected function buildProductOptionFacade()
 {
     $container = new Container();
     $container[self::FACADE_PRODUCT] = function (Container $container) {
         return $this->productFacade;
     };
     $container[self::FACADE_LOCALE] = function (Container $container) {
         return $this->localeFacade;
     };
     $container[self::QUERY_CONTAINER_PRODUCT] = function (Container $container) {
         return $this->productQueryContainer;
     };
     $container[self::PROPEL_CONNECTION] = function () {
         return (new Connection())->get();
     };
     $persistenceFactory = new ProductOptionPersistenceFactory();
     $persistenceFactory->setContainer($container);
     $this->productOptionQueryContainer->setFactory($persistenceFactory);
     $businessFactory = new ProductOptionBusinessFactory();
     $businessFactory->setContainer($container);
     $businessFactory->setQueryContainer($this->productOptionQueryContainer);
     $this->facade->setFactory($businessFactory);
 }
 /**
  * @param int $idProductOptionValueUsage
  * @param int $idLocale
  *
  * @return \Generated\Shared\Transfer\ProductOptionTransfer
  */
 public function getProductOption($idProductOptionValueUsage, $idLocale)
 {
     return $this->productOptionFacade->getProductOption($idProductOptionValueUsage, $idLocale);
 }
 /**
  * @param int $idTypeUsage
  *
  * @return string|null
  */
 public function getEffectiveTaxRateForTypeUsage($idTypeUsage)
 {
     return $this->productOptionFacade->getEffectiveTaxRateForTypeUsage($idTypeUsage);
 }