Sonata\Test\ProductBundle\Model\BaseProductProviderTest::testBasketAddProduct PHP Method

testBasketAddProduct() public method

    public function testBasketAddProduct()
    {
        $productProvider = $this->createNewProductProvider();
        $product = $this->getMockBuilder('Sonata\\Component\\Product\\ProductInterface')->getMock();
        $basketElement = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketElementInterface')->getMock();
        // Simulate a product already in the basket
        $basket = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketInterface')->getMock();
        $basket->expects($this->any())->method('hasProduct')->will($this->returnValue(true));
        $currency = new Currency();
        $currency->setLabel('EUR');
        $basket->expects($this->any())->method('getCurrency')->will($this->returnValue($currency));
        $this->assertFalse($productProvider->basketAddProduct($basket, $product, $basketElement));
        // Test with product having options
        $basket = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketInterface')->getMock();
        $basket->expects($this->any())->method('hasProduct')->will($this->returnValue(false));
        $currency = new Currency();
        $currency->setLabel('EUR');
        $basket->expects($this->any())->method('getCurrency')->will($this->returnValue($currency));
        $basketElement = new BasketElement();
        $product->expects($this->any())->method('getOptions')->will($this->returnValue(array('even' => true, 'more' => true, 'tests' => true)));
        $result = $productProvider->basketAddProduct($basket, $product, $basketElement);
        $this->assertTrue($basketElement->hasOption('even'));
        $this->assertTrue($basketElement->hasOption('more'));
        $this->assertTrue($basketElement->hasOption('tests'));
        $this->assertInstanceOf('Sonata\\Component\\Basket\\BasketElementInterface', $result);
    }