public function testValidateFormBasketElement()
{
$productProvider = $this->createNewProductProvider();
$errorElement = $this->getMockBuilder('Sonata\\CoreBundle\\Validator\\ErrorElement')->disableOriginalConstructor()->getMock();
$basket = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketInterface')->getMock();
// With a deleted element
$basketElement = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketElementInterface')->getMock();
$basketElement->expects($this->any())->method('getDelete')->will($this->returnValue(true));
$this->assertNull($productProvider->validateFormBasketElement($errorElement, $basketElement, $basket));
// Without a product
$basketElement = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketElementInterface')->getMock();
$basketElement->expects($this->any())->method('getProduct')->will($this->returnValue(false));
$this->assertNull($productProvider->validateFormBasketElement($errorElement, $basketElement, $basket));
// With a disabled product
$basketElement = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketElementInterface')->getMock();
$product = $this->getMockBuilder('Sonata\\Component\\Product\\ProductInterface')->getMock();
$product->expects($this->any())->method('getEnabled')->will($this->returnValue(false));
$basketElement->expects($this->any())->method('getProduct')->will($this->returnValue($product));
$this->assertNull($productProvider->validateFormBasketElement($errorElement, $basketElement, $basket));
// With a non numeric quantity
$basketElement = $this->getMockBuilder('Sonata\\Component\\Basket\\BasketElementInterface')->getMock();
$product = $this->getMockBuilder('Sonata\\Component\\Product\\ProductInterface')->getMock();
$basketElement->expects($this->any())->method('getProduct')->will($this->returnValue($product));
$basketElement->expects($this->any())->method('getQuantity')->will($this->returnValue('invalid value'));
$this->assertNull($productProvider->validateFormBasketElement($errorElement, $basketElement, $basket));
}