public function testBasket() { $provider = $this->getMock('Sonata\\Component\\Product\\ProductProviderInterface'); $provider->expects($this->once())->method('basketAddProduct')->will($this->returnValue(true)); $provider->expects($this->once())->method('createBasketElement')->will($this->returnValue($basketElement = new BasketElement())); $product = $this->getMock('Sonata\\Component\\Product\\ProductInterface'); $customer = $this->getMock('Sonata\\Component\\Customer\\CustomerInterface'); $manager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface'); $manager->expects($this->once())->method('findOneBy')->will($this->returnValue($product)); $pool = $this->getMock('Sonata\\Component\\Product\\Pool'); $pool->expects($this->once())->method('getProvider')->will($this->returnValue($provider)); $pool->expects($this->once())->method('getManager')->will($this->returnValue($manager)); $basket = $this->getMock('Sonata\\Component\\Basket\\BasketInterface'); $basket->expects($this->once())->method('reset'); $basket->expects($this->once())->method('buildPrices'); $orderElement = $this->getMock('Sonata\\Component\\Order\\OrderElementInterface'); $orderElement->expects($this->exactly(2))->method('getProductType'); $orderElement->expects($this->exactly(1))->method('getProductId')->will($this->returnValue(2)); $orderElement->expects($this->exactly(1))->method('getOptions')->will($this->returnValue(array())); $orderElement->expects($this->exactly(1))->method('getQuantity')->will($this->returnValue(2)); $order = $this->getMock('Sonata\\Component\\Order\\OrderInterface'); $order->expects($this->once())->method('getOrderElements')->will($this->returnValue(array($orderElement))); $order->expects($this->once())->method('getCustomer')->will($this->returnValue($customer)); $currency = new Currency(); $currency->setLabel('EUR'); $order->expects($this->once())->method('getCurrency')->will($this->returnValue($currency)); $transformer = new OrderTransformer($pool); $transformer->transformIntoBasket($order, $basket); $this->assertEquals(2, $basketElement->getQuantity()); }
/** * Test quantity setter, if quantity is negative, must returns a quantity of 1 */ public function testNegativeQuantity() { $basketElement = new BasketElement(); $basketElement->setQuantity(50); $this->assertEquals(50, $basketElement->getQuantity()); $basketElement->setQuantity(-50); $this->assertEquals(1, $basketElement->getQuantity()); }
public function testGettersSetters() { $basket = $this->getPreparedBasket(); $product = $this->getMockProduct(); $basketElement = new BasketElement(); $basketElement->setProduct('product_code', $product); $basket->setBasketElements(array($basketElement)); $this->assertEquals(array($basketElement), $basket->getBasketElements()); $basket->setDeliveryAddressId(1); $this->assertEquals(1, $basket->getDeliveryAddressId()); $basket->setBillingAddressId(1); $this->assertEquals(1, $basket->getBillingAddressId()); $deliveryMethod = $this->getMock('Sonata\\Component\\Delivery\\ServiceDeliveryInterface'); $deliveryMethod->expects($this->any())->method('getCode')->will($this->returnValue(1)); $basket->setDeliveryMethod($deliveryMethod); $this->assertEquals(1, $basket->getDeliveryMethodCode()); $paymentMethod = $this->getMock('Sonata\\Component\\Payment\\PaymentInterface'); $paymentMethod->expects($this->any())->method('getCode')->will($this->returnValue(1)); $basket->setPaymentMethod($paymentMethod); $this->assertEquals(1, $basket->getPaymentMethodCode()); $basket->setCustomerId(1); $this->assertEquals(1, $basket->getCustomerId()); $options = array('option1' => 'value1', 'option2' => 'value2'); $basket->setOptions($options); $this->assertNull($basket->getOption('unexisting_option')); $this->assertEquals(42, $basket->getOption('unexisting_option', 42)); $this->assertEquals('value1', $basket->getOption('option1')); $this->assertEquals($options, $basket->getOptions()); $basket->setOption('option3', 'value3'); $this->assertEquals('value3', $basket->getOption('option3')); $basket->setLocale('en'); $this->assertEquals('en', $basket->getLocale()); }
public function testGettersSetters() { $currency = $this->getMock('Sonata\\Component\\Currency\\Currency'); $productProvider = $this->getMock('Sonata\\Component\\Product\\ProductProviderInterface'); $productManager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface'); $productDefinition = new ProductDefinition($productProvider, $productManager); $basketElement = new BasketElement(); $basketElement->setProductDefinition($productDefinition); $this->assertEquals(0, $basketElement->getVatRate()); $this->assertEquals(0, $basketElement->getUnitPrice($currency)); $this->assertFalse($basketElement->isValid()); $provider = $this->getMock('Sonata\\Component\\Product\\ProductProviderInterface'); $manager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface'); $productDefinition = new ProductDefinition($provider, $manager); // Tests getProduct $this->assertNull($basketElement->getProduct()); $basketElement->setProductDefinition($productDefinition); $this->assertNull($basketElement->getProduct()); $product = $this->getMock('Sonata\\Component\\Product\\ProductInterface'); $product->expects($this->any())->method('getId')->will($this->returnValue(42)); $basketElement->setProduct('product_code', $product); $this->assertEquals($product, $basketElement->getProduct()); // Tests setProductId $basketElement->setProductId(42); $this->assertEquals(42, $basketElement->getProductId()); $basketElement->setProductId(24); $this->assertNull($basketElement->getProductId()); $manager->expects($this->any())->method('findOneBy')->will($this->returnValue($product)); $basketElement->setProductDefinition(new ProductDefinition($provider, $manager)); $basketElement->setProductId(42); $basketElement->setProduct('product_code', $product); // Done by the provider hereby mocked, hence we do it manually $this->assertEquals($product->getId(), $basketElement->getProductId()); // Options $options = array('option1' => 'value1', 'option2' => 'value2'); $basketElement->setOptions($options); $this->assertNull($basketElement->getOption('unexisting_option')); $this->assertEquals(42, $basketElement->getOption('unexisting_option', 42)); $this->assertEquals('value1', $basketElement->getOption('option1')); $this->assertEquals($options, $basketElement->getOptions()); $basketElement->setOption('option3', 'value3'); $this->assertEquals('value3', $basketElement->getOption('option3')); // Other getters & setters $this->assertEquals($provider, $basketElement->getProductProvider()); $this->assertEquals($manager, $basketElement->getProductManager()); $this->assertEquals('product_code', $basketElement->getProductCode()); $basketElement->setDelete(false); $this->assertFalse($basketElement->getDelete()); }
public function testOrderElement() { $product = $this->getMock('Sonata\\Component\\Product\\ProductInterface'); $product->expects($this->any())->method('getId')->will($this->returnValue(42)); $product->expects($this->any())->method('getName')->will($this->returnValue('Product name')); $product->expects($this->any())->method('getPrice')->will($this->returnValue(9.99)); $product->expects($this->any())->method('getOptions')->will($this->returnValue(array('foo' => 'bar'))); $product->expects($this->any())->method('getDescription')->will($this->returnValue('product description')); $productProvider = new ProductProviderTest($this->getMock('JMS\\Serializer\\SerializerInterface')); $productProvider->setCurrencyPriceCalculator(new CurrencyPriceCalculator()); $productManager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface'); $productDefinition = new ProductDefinition($productProvider, $productManager); $basketElement = new BasketElement(); $basketElement->setProduct('product_code', $product); $basketElement->setProductDefinition($productDefinition); $provider = $this->getBaseProvider(); $orderElement = $provider->createOrderElement($basketElement); $this->assertInstanceOf('Sonata\\Component\\Order\\OrderElementInterface', $orderElement); $this->assertEquals(OrderInterface::STATUS_PENDING, $orderElement->getStatus()); $this->assertEquals('Product name', $orderElement->getDesignation()); $this->assertEquals(1, $orderElement->getQuantity()); }