/**
  * @return void
  */
 public function testImportProductOptionValueUsageConstraint()
 {
     $product = $this->createProductConcrete();
     $optionShadeViolet = $this->createOptionTypeWithValue('SHADE', 'VIOLET');
     $optionFittingClassic = $this->createOptionTypeWithValue('FITTING', 'CLASSIC');
     $productOptionShade = $this->createProductOptionTypeUsage($product, $optionShadeViolet);
     $productOptionFitting = $this->createProductOptionTypeUsage($product, $optionFittingClassic);
     $idProductOptionValueUsageSmall = $this->facade->importProductOptionValueUsage($productOptionFitting->getIdProductOptionTypeUsage(), 'CLASSIC');
     $idProductOptionValueUsageViolet = $this->facade->importProductOptionValueUsage($productOptionShade->getIdProductOptionTypeUsage(), 'VIOLET');
     $this->facade->importProductOptionValueUsageConstraint($product->getSku(), $idProductOptionValueUsageSmall, 'VIOLET', 'NOT');
     $this->facade->importProductOptionValueUsageConstraint($product->getSku(), $idProductOptionValueUsageViolet, 'CLASSIC', 'NOT');
     $this->facade->flushBuffer();
     $result = SpyProductOptionValueUsageConstraintQuery::create()->filterByFkProductOptionValueUsageA([$idProductOptionValueUsageSmall, $idProductOptionValueUsageViolet], Criteria::IN)->filterByFkProductOptionValueUsageB([$idProductOptionValueUsageSmall, $idProductOptionValueUsageViolet], Criteria::IN)->find();
     $this->assertEquals(1, $result->count(), 'Failed asserting that method is idempotent');
     $this->performAssertionOnTouchTable($product->getFkProductAbstract());
 }
 /**
  * @return \Orm\Zed\ProductOption\Persistence\SpyProductOptionValueUsageConstraintQuery
  */
 public function createProductOptionValueUsageConstraintQuery()
 {
     return SpyProductOptionValueUsageConstraintQuery::create();
 }