public function getBasketElement($product = null)
 {
     $product = $this->getMock('Sonata\\Component\\Product\\ProductInterface', array(), array(), 'BasketTest_Product');
     $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(15));
     $product->expects($this->any())->method('isPriceIncludingVat')->will($this->returnValue(false));
     $product->expects($this->any())->method('getVatRate')->will($this->returnValue(19.6));
     $product->expects($this->any())->method('getOptions')->will($this->returnValue(array('option1' => 'toto')));
     $product->expects($this->any())->method('getDescription')->will($this->returnValue('product description'));
     $productProvider = new ProductProviderTest($this->getMock('JMS\\Serializer\\SerializerInterface'));
     $productProvider->setCurrencyPriceCalculator(new CurrencyPriceCalculator());
     $productProvider->setEventDispatcher($this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'));
     $productManager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface');
     $productDefinition = new ProductDefinition($productProvider, $productManager);
     $basketElement = new BasketElement();
     $basketElement->setProduct('product_code', $product);
     $basketElement->setProductDefinition($productDefinition);
     $currency = new Currency();
     $currency->setLabel('EUR');
     $basket = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketInterface')->getMock();
     $basket->expects($this->any())->method('getCurrency')->will($this->returnValue($currency));
     $productProvider->updateComputationPricesFields($basket, $basketElement, $product);
     return $basketElement;
 }