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;
}