Esempio n. 1
0
 /**
  * @depends testRemoveAccessory
  */
 public function testSetProductTemplate(ProductModel $product)
 {
     $templateId = TemplateQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne();
     $currencyId = CurrencyQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne();
     $oldProductSaleElements = $product->getDefaultSaleElements();
     $this->assertEquals("Thelia\\Model\\ProductSaleElements", get_class($oldProductSaleElements), "There is no default pse for this product");
     $event = new ProductSetTemplateEvent($product, $templateId, $currencyId);
     $event->setDispatcher($this->getDispatcher());
     $action = new Product();
     $action->setProductTemplate($event);
     $updatedProduct = $event->getProduct();
     $this->assertEquals($templateId, $updatedProduct->getTemplateId());
     $productSaleElements = $updatedProduct->getProductSaleElementss();
     $this->assertEquals(1, count($productSaleElements), "after setting a new template, only 1 product_sale_elements must be present");
     /** @var \Thelia\Model\ProductSaleElements $newProductSaleElements */
     $newProductSaleElements = $productSaleElements->getFirst();
     $this->assertEquals($updatedProduct->getRef(), $newProductSaleElements->getRef(), sprintf("PSE ref must be %s", $updatedProduct->getRef()));
     $this->assertTrue($newProductSaleElements->getIsDefault(), 'new PSE must be the default one for this product');
     $productPrice = $newProductSaleElements->getProductPrices()->getFirst();
     $oldProductPrice = $oldProductSaleElements->getProductPrices()->getFirst();
     $this->assertEquals($oldProductSaleElements->getWeight(), $newProductSaleElements->getWeight(), sprintf("->testSetProductTemplate new PSE weight must be %s", $oldProductSaleElements->getWeight()));
     $this->assertEquals($oldProductPrice->getPrice(), $productPrice->getPrice(), sprintf("->testSetProductTemplate price must be %s", $oldProductPrice->getPrice()));
     $this->assertEquals($oldProductPrice->getPromoPrice(), $productPrice->getPromoPrice(), sprintf("->testSetProductTemplate promo price must be %s", $oldProductPrice->getPromoPrice()));
     $this->assertEquals($oldProductPrice->getCurrencyId(), $productPrice->getCurrencyId(), sprintf("->testSetProductTemplate currency_id must be %s", $oldProductPrice->getCurrencyId()));
     return $updatedProduct;
 }