Sonata\Component\Form\BasketValidator::validate PHP Method

validate() public method

The validator asks each product repository to validate the related basket element.
public validate ( Sonata\Component\Basket\BasketInterface $basket, Constraint $constraint )
$basket Sonata\Component\Basket\BasketInterface
$constraint Symfony\Component\Validator\Constraint
    public function validate($basket, Constraint $constraint)
    {
        foreach ($basket->getBasketElements() as $pos => $basketElement) {
            // create a new ErrorElement object
            $errorElement = new ErrorElement($basket, $this->constraintValidatorFactory, $this->context, $this->context->getGroup());
            $errorElement->with('basketElements[' . $pos . ']');
            // validate the basket element through the related service provider
            $this->productPool->getProvider($basketElement->getProductCode())->validateFormBasketElement($errorElement, $basketElement, $basket);
        }
        if (count($this->context->getViolations()) > 0) {
            $this->context->addViolationAt('basketElements', $constraint->message);
        }
    }

Usage Example

Example #1
0
 public function testValidate()
 {
     $provider = $this->getMock('Sonata\\Component\\Product\\ProductProviderInterface');
     $provider->expects($this->once())->method('validateFormBasketElement');
     $pool = $this->getMockBuilder('Sonata\\Component\\Product\\Pool')->disableOriginalConstructor()->getMock();
     $pool->expects($this->once())->method('getProvider')->will($this->returnValue($provider));
     $consValFact = $this->getMockBuilder('Symfony\\Bundle\\FrameworkBundle\\Validator\\ConstraintValidatorFactory')->disableOriginalConstructor()->getMock();
     $context = $this->getMockBuilder('Symfony\\Component\\Validator\\ExecutionContext')->disableOriginalConstructor()->getMock();
     $context->expects($this->once())->method('getViolations')->will($this->returnValue(array('violation1')));
     $context->expects($this->once())->method('addViolationAt');
     $validator = new BasketValidator($pool, $consValFact);
     $validator->initialize($context);
     $elements = array($this->getMock('Sonata\\Component\\Basket\\BasketElementInterface'));
     $basket = $this->getMock('Sonata\\Component\\Basket\\BasketInterface');
     $basket->expects($this->once())->method('getBasketElements')->will($this->returnValue($elements));
     $constraint = new NotBlank();
     $validator->validate($basket, $constraint);
 }