/** * @param int $productId * @param string $unitCode * @param int $quantity * @param float $value * @param string $currency * @return ProductPrice */ protected function createPrice($productId, $unitCode, $quantity, $value, $currency) { $productPrice = new ProductPrice(); $price = new Price(); $price->setCurrency($currency); $price->setValue($value); $product = new Product(); $idReflection = new \ReflectionProperty(get_class($product), 'id'); $idReflection->setAccessible(true); $idReflection->setValue($product, $productId); $unit = new ProductUnit(); $unit->setCode($unitCode); $productPrice->setProduct($product); $productPrice->setUnit($unit); $productPrice->setQuantity($quantity); $productPrice->setPrice($price); return $productPrice; }
public function testProcessLoadPriceAndProduct() { $productPrice = new ProductPrice(); $productPrice->setQuantity(555); $this->setValue($productPrice, 'value', 1.2); $this->setValue($productPrice, 'currency', 'USD'); /** @var ProductUnit $unit */ $unit = $this->getReference('product_unit.liter'); /** @var Product $product */ $product = $this->getReference('product.1'); /** @var PriceList $priceList */ $priceList = $this->getReference('price_list_1'); $productObject = new Product(); $productObject->setSku($product->getSku()); $productPrice->setProduct($product); $productPrice->setUnit($unit); $productPrice->setPriceList($priceList); $this->strategy->process($productPrice); $this->assertNotEmpty($productPrice->getPrice()); $this->assertEquals('USD', $productPrice->getPrice()->getCurrency()); $this->assertEquals(1.2, $productPrice->getPrice()->getValue()); $this->assertNotEmpty($productPrice->getProduct()); $this->assertEquals($product->getSku(), $productPrice->getProduct()->getSku()); }