/** * @depends testCloneFeatureCombination * @param ProductCloneEvent $event * @return ProductCloneEvent */ public function testCloneAssociatedContent(ProductCloneEvent $event) { // Call function to test $action = new Product(); $action->cloneAssociatedContent($event); // Get products' associated contents $originalProductAssocConts = ProductAssociatedContentQuery::create()->findByProductId($event->getOriginalProduct()->getId()); $cloneProductAssocConts = ProductAssociatedContentQuery::create()->filterByProductId($event->getClonedProduct()->getId())->count(); $this->assertEquals(count($originalProductAssocConts), $cloneProductAssocConts, 'There must be the same quantity of associated contents'); // Check clone product's associated contents foreach ($originalProductAssocConts as $originalProductAssocCont) { $cloneProductAssocCont = ProductAssociatedContentQuery::create()->filterByProductId($event->getClonedProduct()->getId())->filterByPosition($originalProductAssocCont->getPosition())->findOneByContentId($originalProductAssocCont->getContentId()); $this->assertInstanceOf('Thelia\\Model\\ProductAssociatedContent', $cloneProductAssocCont, 'Instance of clone product associated content must be Thelia\\Model\\ProductAssociatedContent'); $this->assertEquals($event->getClonedProduct()->getId(), $cloneProductAssocCont->getProductId(), 'ProductID must be equal'); $this->assertEquals($originalProductAssocCont->getContentId(), $cloneProductAssocCont->getContentId(), 'ContentID must be equal'); $this->assertEquals($originalProductAssocCont->getPosition(), $cloneProductAssocCont->getPosition(), 'Position must be equal'); } return $event; }
/** * @depends testCloneAssociatedContent * @param ProductCloneEvent $event * @return ProductCloneEvent */ public function testCloneAccessories(ProductCloneEvent $event) { // Call function to test $action = new Product(); $action->cloneAccessories($event); // Get products' associated contents $originalProductAccessoryList = AccessoryQuery::create()->findByProductId($event->getOriginalProduct()->getId()); $cloneProductAccessoryList = AccessoryQuery::create()->filterByProductId($event->getClonedProduct()->getId())->count(); $this->assertEquals(count($originalProductAccessoryList), $cloneProductAccessoryList, 'There must be the same quantity of accessories'); // Check clone product's accessories foreach ($originalProductAccessoryList as $originalProductAccessory) { $cloneProductAccessory = AccessoryQuery::create()->filterByProductId($event->getClonedProduct()->getId())->filterByPosition($originalProductAccessory->getPosition())->findOneByAccessory($originalProductAccessory->getAccessory()); $this->assertInstanceOf('Thelia\\Model\\Accessory', $cloneProductAccessory, 'Instance of clone product accessory must be Thelia\\Model\\Accessory'); $this->assertEquals($event->getClonedProduct()->getId(), $cloneProductAccessory->getProductId(), 'ProductID must be equal'); $this->assertEquals($originalProductAccessory->getAccessory(), $cloneProductAccessory->getAccessory(), 'Accessory must be equal'); $this->assertEquals($originalProductAccessory->getPosition(), $cloneProductAccessory->getPosition(), 'Position must be equal'); } return $event; }
/** * @depends testSetProductTemplate */ public function testDelete(ProductModel $product) { $event = new ProductDeleteEvent($product->getId()); $event->setDispatcher($this->getDispatcher()); $action = new Product(); $action->delete($event); $deletedProduct = $event->getProduct(); $this->assertInstanceOf('Thelia\\Model\\Product', $deletedProduct, 'deleted product must be an instance of Thelia\\Model\\Product'); $this->assertTrue($deletedProduct->isDeleted()); }