Esempio n. 1
0
 /**
  * @depends testCreateClone
  * @param ProductCloneEvent $event
  * @return ProductCloneEvent
  */
 public function testUpdateClone(ProductCloneEvent $event)
 {
     $originalProductPrice = ProductPriceQuery::create()->findOneByProductSaleElementsId($event->getOriginalProduct()->getDefaultSaleElements()->getId());
     // Call function to test
     $action = new Product();
     $action->updateClone($event, $originalProductPrice);
     $cloneProduct = $event->getClonedProduct();
     $this->assertInstanceOf('Thelia\\Model\\Product', $cloneProduct, 'Instance of clone product must be Thelia\\Model\\Product');
     // Get I18ns
     $originalProductI18ns = ProductI18nQuery::create()->findById($event->getOriginalProduct()->getId());
     $cloneProductI18ns = ProductI18nQuery::create()->filterById($cloneProduct->getId())->count();
     $this->assertEquals(count($originalProductI18ns), $cloneProductI18ns, 'There must be the same quantity of I18ns');
     // Check each I18n
     foreach ($originalProductI18ns as $originalProductI18n) {
         $cloneProductI18n = ProductI18nQuery::create()->findPk([$cloneProduct->getId(), $originalProductI18n->getLocale()]);
         $this->assertInstanceOf('Thelia\\Model\\ProductI18n', $cloneProductI18n, 'Instance of clone product I18n must be Thelia\\Model\\ProductI18n');
         // I18n
         $this->assertEquals($originalProductI18n->getLocale(), $cloneProductI18n->getLocale(), 'Locale must be equal');
         $this->assertEquals($originalProductI18n->getTitle(), $cloneProductI18n->getTitle(), 'Title must be equal');
         $this->assertEquals($originalProductI18n->getChapo(), $cloneProductI18n->getChapo(), 'Chapo must be equal');
         $this->assertEquals($originalProductI18n->getDescription(), $cloneProductI18n->getDescription(), 'Description must be equal');
         $this->assertEquals($originalProductI18n->getPostscriptum(), $cloneProductI18n->getPostscriptum(), 'Postscriptum must be equal');
         // SEO - Meta
         $this->assertEquals($originalProductI18n->getMetaTitle(), $cloneProductI18n->getMetaTitle(), 'MetaTitle must be equal');
         $this->assertEquals($originalProductI18n->getMetaDescription(), $cloneProductI18n->getMetaDescription(), 'MetaDescription must be equal');
         $this->assertEquals($originalProductI18n->getMetaKeywords(), $cloneProductI18n->getMetaKeywords(), 'MetaKeywords must be equal');
         // SEO - Rewriting URL
         $originalUrl = RewritingUrlQuery::create()->filterByView('product')->filterByViewId($originalProductI18n->getId())->findOneByViewLocale($originalProductI18n->getLocale());
         $cloneUrl = RewritingUrlQuery::create()->filterByView('product')->filterByViewId($cloneProduct->getId())->findOneByViewLocale($cloneProductI18n->getLocale());
         $this->assertEquals('product', $cloneUrl->getView(), 'View must be equal to \'product\'');
         $this->assertEquals($cloneProduct->getId(), $cloneUrl->getViewId(), 'ViewID must be equal');
         $this->assertEquals($originalProductI18n->getLocale(), $cloneUrl->getViewLocale(), 'ViewLocale must be equal to current I18n\'s locale');
         $this->assertEquals($originalUrl->getRedirected(), $cloneUrl->getRedirected(), 'Redirect must be equal');
     }
     // Check template
     $this->assertEquals($event->getOriginalProduct()->getTemplateId(), $cloneProduct->getTemplateId(), 'TemplateID must be equal');
     $this->assertEquals($originalProductPrice->getCurrencyId(), $cloneProduct->getProductSaleElementss()->getFirst()->getProductPrices()->getFirst()->getCurrencyId(), 'Currency IDs must be equal');
     return $event;
 }