public function testCreate() { $event = new ProductCreateEvent(); $defaultCategory = CategoryQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne(); $taxRuleId = TaxRuleQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne(); $currencyId = CurrencyQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne(); $event->setRef('testCreation')->setLocale('fr_FR')->setTitle('test create new product')->setVisible(1)->setDefaultCategory($defaultCategory)->setBasePrice(10)->setTaxRuleId($taxRuleId)->setBaseWeight(10)->setCurrencyId($currencyId)->setDispatcher($this->getDispatcher()); $action = new Product(); $action->create($event); $createdProduct = $event->getProduct(); $this->assertInstanceOf('Thelia\\Model\\Product', $createdProduct); $this->assertFalse($createdProduct->isNew()); $createdProduct->setLocale('fr_FR'); $this->assertEquals('test create new product', $createdProduct->getTitle()); $this->assertEquals('testCreation', $createdProduct->getRef()); $this->assertEquals(1, $createdProduct->getVisible()); $this->assertEquals($defaultCategory, $createdProduct->getDefaultCategoryId()); $this->assertGreaterThan(0, $createdProduct->getPosition()); $productSaleElements = $createdProduct->getProductSaleElementss(); $this->assertEquals(1, count($productSaleElements)); $defaultProductSaleElement = $productSaleElements->getFirst(); $this->assertTrue($defaultProductSaleElement->getIsDefault()); $this->assertEquals(0, $defaultProductSaleElement->getPromo()); $this->assertEquals(0, $defaultProductSaleElement->getNewness()); $this->assertEquals($createdProduct->getRef(), $defaultProductSaleElement->getRef()); $this->assertEquals(10, $defaultProductSaleElement->getWeight()); $productPrice = $defaultProductSaleElement->getProductPrices()->getFirst(); $this->assertEquals(10, $productPrice->getPrice()); $this->assertEquals($currencyId, $productPrice->getCurrencyId()); return $createdProduct; }
public function testCreateWithOptionalParametersAction() { $event = new ProductCreateEvent(); /** @var Category $defaultCategory */ $defaultCategory = CategoryQuery::create()->addAscendingOrderByColumn('RAND()')->findOne(); $taxRuleId = TaxRuleQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne(); $currencyId = CurrencyQuery::create()->select('id')->addAscendingOrderByColumn('RAND()')->findOne(); $templateId = $defaultCategory->getDefaultTemplateId(); if (null === $templateId) { $templateId = TemplateQuery::create()->addAscendingOrderByColumn('RAND()')->findOne()->getId(); } $newRef = 'testCreateWithOptionalParameters' . uniqid('_'); $event->setRef($newRef)->setLocale('fr_FR')->setTitle('test create new product with optional parameters')->setVisible(1)->setDefaultCategory($defaultCategory->getId())->setBasePrice(10)->setTaxRuleId($taxRuleId)->setBaseWeight(10)->setCurrencyId($currencyId)->setBaseQuantity(10)->setTemplateId($templateId); $action = new Product($this->getMockEventDispatcher()); $action->create($event); $createdProduct = $event->getProduct(); $this->assertInstanceOf('Thelia\\Model\\Product', $createdProduct); $this->assertFalse($createdProduct->isNew()); $createdProduct->setLocale('fr_FR'); $this->assertEquals('test create new product with optional parameters', $createdProduct->getTitle()); $this->assertEquals($newRef, $createdProduct->getRef()); $this->assertEquals(1, $createdProduct->getVisible()); $this->assertEquals($defaultCategory->getId(), $createdProduct->getDefaultCategoryId()); $this->assertGreaterThan(0, $createdProduct->getPosition()); $this->assertEquals($templateId, $createdProduct->getTemplateId()); $productSaleElements = $createdProduct->getProductSaleElementss(); $this->assertEquals(1, count($productSaleElements)); $defaultProductSaleElement = $productSaleElements->getFirst(); $this->assertTrue($defaultProductSaleElement->getIsDefault()); $this->assertEquals(0, $defaultProductSaleElement->getPromo()); $this->assertEquals(0, $defaultProductSaleElement->getNewness()); $this->assertEquals($createdProduct->getRef(), $defaultProductSaleElement->getRef()); $this->assertEquals(10, $defaultProductSaleElement->getWeight()); $this->assertEquals(10, $defaultProductSaleElement->getQuantity()); /** @var ProductPrice $productPrice */ $productPrice = $defaultProductSaleElement->getProductPrices()->getFirst(); $this->assertEquals(10, $productPrice->getPrice()); $this->assertEquals($currencyId, $productPrice->getCurrencyId()); }