* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Tests\Extension\Validator\EventListener; use PHPUnit\Framework\TestCase; use Symfony\Component\Form\FormBuilder; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\Extension\Validator\Constraints\Form; use Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener; use Symfony\Component\PropertyAccess\PropertyPath; use Symfony\Component\Validator\ConstraintViolation; use Symfony\Component\Validator\ConstraintViolationList; class ValidationListenerTest extends TestCase { /** * @var \PHPUnit_Framework_MockObject_MockObject */ private $dispatcher; /** * @var \PHPUnit_Framework_MockObject_MockObject */ private $factory; /** * @var \PHPUnit_Framework_MockObject_MockObject */ private $validator; /** * @var \PHPUnit_Framework_MockObject_MockObject */ private $violationMapper; /** * @var ValidationListener */ private $listener; private $message; private $messageTemplate; private $params; protected function setUp() { $this->dispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcherInterface')->getMock(); $this->factory = $this->getMockBuilder('Symfony\Component\Form\FormFactoryInterface')->getMock(); $this->validator = $this->getMockBuilder('Symfony\Component\Validator\Validator\ValidatorInterface')->getMock(); $this->violationMapper = $this->getMockBuilder('Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapperInterface')->getMock(); $this->listener = new ValidationListener($this->validator, $this->violationMapper); $this->message = 'Message'; $this->messageTemplate = 'Message template'; $this->params = array('foo' => 'bar'); } private function getConstraintViolation($code = null) { return new ConstraintViolation($this->message, $this->messageTemplate, $this->params, null, 'prop.path', null, null, $code, new Form()); } private function getBuilder($name = 'name', $propertyPath = null, $dataClass = null) { $builder = new FormBuilder($name, $dataClass, $this->dispatcher, $this->factory); $builder->setPropertyPath(new PropertyPath($propertyPath ?: $name)); $builder->setAttribute('error_mapping', array()); $builder->setErrorBubbling(false); $builder->setMapped(true); return $builder; } private function getForm($name = 'name', $propertyPath = null, $dataClass = null) { return $this->getBuilder($name, $propertyPath, $dataClass)->getForm(); } private function getMockForm() { return $this->getMockBuilder('Symfony\Component\Form\Test\FormInterface')->getMock(); } // More specific mapping tests can be found in ViolationMapperTest public function testMapViolation() { $violation = $this->getConstraintViolation(); $form = $this->getForm('street'); $this->validator->expects($this->once()) ->method('validate') ->will($this->returnValue(array($violation))); $this->violationMapper->expects($this->once()) ->method('mapViolation') ->with($violation, $form, false); $this->listener->validateForm(new FormEvent($form, null)); } public function testMapViolationAllowsNonSyncIfInvalid() { $violation = $this->getConstraintViolation(Form::NOT_SYNCHRONIZED_ERROR); $form = $this->getForm('street'); $this->validator->expects($this->once()) ->method('validate') ->will($this->returnValue(array($violation))); $this->violationMapper->expects($this->once()) ->method('mapViolation') // pass true now ->with($violation, $form, true); $this->listener->validateForm(new FormEvent($form, null)); } public function testValidateIgnoresNonRoot() { $form = $this->getMockForm(); $form->expects($this->once()) ->method('isRoot') ->will($this->returnValue(false)); $this->validator->expects($this->never()) ->method('validate'); $this->violationMapper->expects($this->never()) ->method('mapViolation'); $this->listener->validateForm(new FormEvent($form, null)); } public function testValidateWithEmptyViolationList() { $form = $this->getMockForm(); $form->expects($this->once()) ->method('isRoot') ->will($this->returnValue(true)); $this->validator ->expects($this->once()) ->method('validate') ->will($this->returnValue(new ConstraintViolationList())); $this->violationMapper ->expects($this->never()) ->method('mapViolation'); $this->listener->validateForm(new FormEvent($form, null)); } public function testValidatorInterface() { $validator = $this->getMockBuilder('Symfony\Component\Validator\Validator\ValidatorInterface')->getMock(); $listener = new ValidationListener($validator, $this->violationMapper); $this->assertAttributeSame($validator, 'validator', $listener); } } __halt_compiler();----SIGNATURE:----qhZ6zw6LVOmy6R3Igy2AQULBcrxyx5/XIb2ZFGRBi4oF8P00kAeCVBPiO1zYBvIAFuvr1aDIQgoMYS4tqwjOmzdQ9DprMlUBL2ZyDMOozDJuBNws1oFjFOCfIKQxqfBklLqc2QLeucUesQjhOKAptzSgenxH/WJpJRfPMLhLa0TQjurqHpipv02lhQ/Gee+lvJ/C1XAGn/fL3AEQgsHCuQpilJn9LaybC3imGvl57oP1puoZiXOuS9aCNwzXJ/iMRDAVLvHzOJkHuuc78BP/lOefrPRISYfqGEkenTwx9nZoUcfQuK15mQg+MIhDV1AJJ8udANMtHU2IfAbR98y9+4GxzzmpWtbsaLGGcbdx/3B20S0yjI5GdyvzJituXIoXD+QvQ1pJU6UeupR90P0rZYWY5CucUSaWx+2BzeuxK3M+MBHqhi7SbjgtD+5ps1w9wH4/qeIOa2+B79B6VpPQgQDxYnHnBhNmXAYUbaz8AzChm89csn6XnPEBraUM1XI8jUb1siWVqdQqtPtNtU8dZpLqZB6htAdRbs1qxwY1cJFwSr95zO4zDD/B2cozVsIIBPcZyRbqPLZNcFCbsSAYfl1JxewkUIrN5fTjkVkdTI2fTubzT4ql8hMK7PNNHN1N0RWma2risrT9UoOuEOrbzaV3zpuOMHkyOLe2JRoUkN8=----ATTACHMENT:----NjU4NDY2Njk3MDk4MDM4MiAxODMyNzY3NzUxODkxNjk5IDk1NDgxNjc0NDI5MDU1Mg==