Example #1
0
 /**
  * @depends testUpdateClone
  * @param ProductCloneEvent $event
  * @return ProductCloneEvent
  */
 public function testCloneFeatureCombination(ProductCloneEvent $event)
 {
     // Call function to test
     $action = new Product();
     $action->cloneFeatureCombination($event);
     // Get products' features
     $originalProductFeatures = FeatureProductQuery::create()->findByProductId($event->getOriginalProduct()->getId());
     $cloneProductFeatures = FeatureProductQuery::create()->filterByProductId($event->getClonedProduct()->getId())->count();
     $this->assertEquals(count($originalProductFeatures), $cloneProductFeatures, 'There must be the same quantity of features');
     // Check clone product's features
     foreach ($originalProductFeatures as $originalProductFeature) {
         $cloneProductFeatureQuery = FeatureProductQuery::create()->filterByProductId($event->getClonedProduct()->getId())->filterByFeatureId($originalProductFeature->getFeatureId());
         if ($originalProductFeature->getFreeTextValue() != 1) {
             $cloneProductFeatureQuery->filterByFeatureAvId($originalProductFeature->getFeatureAvId());
         }
         $cloneProductFeature = $cloneProductFeatureQuery->findOne();
         $this->assertInstanceOf('Thelia\\Model\\FeatureProduct', $cloneProductFeature, 'Instance of clone product feature must be Thelia\\Model\\FeatureProduct');
         $this->assertEquals($event->getClonedProduct()->getId(), $cloneProductFeature->getProductId(), 'ProductID must be equal');
         $this->assertEquals($originalProductFeature->getFeatureId(), $cloneProductFeature->getFeatureId(), 'FeatureID must be equal');
         if ($originalProductFeature->getFreeTextValue() == 1) {
             $this->assertNotEquals($originalProductFeature->getFeatureAvId(), $cloneProductFeature->getFeatureAvId(), 'FeatureAvID can\'t be equal');
         } else {
             $this->assertEquals($originalProductFeature->getFeatureAvId(), $cloneProductFeature->getFeatureAvId(), 'FeatureAvID must be equal');
         }
         $this->assertEquals($originalProductFeature->getFreeTextValue(), $cloneProductFeature->getFreeTextValue(), 'Free text value must be equal');
         $this->assertEquals($originalProductFeature->getPosition(), $cloneProductFeature->getPosition(), 'Position must be equal');
     }
     return $event;
 }