protected function getForm($name = 'name', $propertyPath = null, $dataClass = null, $errorMapping = array(), $virtual = false, $synchronized = true) { $config = new FormConfigBuilder($name, $dataClass, $this->dispatcher, array('error_mapping' => $errorMapping)); $config->setMapped(true); $config->setVirtual($virtual); $config->setPropertyPath($propertyPath); $config->setCompound(true); $config->setDataMapper($this->getDataMapper()); if (!$synchronized) { $config->addViewTransformer(new CallbackTransformer(function ($normData) { return $normData; }, function () { throw new TransformationFailedException(); })); } return new Form($config); }
public function testSubmitEmptyGetRequestToSimpleForm() { $request = new Request(array(), array(), array(), array(), array(), array('REQUEST_METHOD' => 'GET')); $dispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $config = new FormConfigBuilder('author', null, $dispatcher); $config->setCompound(false); $form = new Form($config); $event = new FormEvent($form, $request); $listener = new BindRequestListener(); $listener->preBind($event); $this->assertNull($event->getData()); }
public function testFormErrorsWithNonFormComponents() { if (!class_exists(SubmitType::class)) { $this->markTestSkipped('Not using Symfony Form >= 2.3 with submit type'); } $dispatcher = $this->createMock(EventDispatcherInterface::class); $factoryBuilder = new FormFactoryBuilder(); $factoryBuilder->addType(new SubmitType()); $factoryBuilder->addType(new ButtonType()); $factory = $factoryBuilder->getFormFactory(); $formConfigBuilder = new FormConfigBuilder('foo', null, $dispatcher); $formConfigBuilder->setFormFactory($factory); $formConfigBuilder->setCompound(true); $formConfigBuilder->setDataMapper($this->createMock(DataMapperInterface::class)); $fooConfig = $formConfigBuilder->getFormConfig(); $form = new Form($fooConfig); $form->add('save', method_exists(AbstractType::class, 'getBlockPrefix') ? SubmitType::class : 'submit'); $this->serialize($form); $this->assertTrue(true); // Exception not thrown }
public function testMapFormsToDataSkipsVirtualForms() { $car = new \stdClass(); $engine = new \stdClass(); $parentPath = $this->getPropertyPath('name'); $childPath = $this->getPropertyPath('engine'); // getValue() and setValue() must never be invoked for $parentPath $this->propertyAccessor->expects($this->once())->method('getValue')->with($car, $childPath); $this->propertyAccessor->expects($this->once())->method('setValue')->with($car, $childPath, $engine); $config = new FormConfigBuilder('name', '\\stdClass', $this->dispatcher); $config->setPropertyPath($parentPath); $config->setVirtual(true); $config->setCompound(true); $config->setDataMapper($this->getDataMapper()); $form = $this->getForm($config); $config = new FormConfigBuilder('engine', '\\stdClass', $this->dispatcher); $config->setByReference(true); $config->setPropertyPath($childPath); $config->setData($engine); $child = $this->getForm($config); $form->add($child); $this->mapper->mapFormsToData(array($form), $car); }
public function testSubmitEmptyGetRequestToSimpleForm() { if (!class_exists('Symfony\\Component\\HttpFoundation\\Request')) { $this->markTestSkipped('The "HttpFoundation" component is not available'); } $request = new Request(array(), array(), array(), array(), array(), array('REQUEST_METHOD' => 'GET')); $dispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $config = new FormConfigBuilder('author', null, $dispatcher); $config->setCompound(false); $form = new Form($config); $event = new FormEvent($form, $request); $listener = new BindRequestListener(); DeprecationErrorHandler::preBind($listener, $event); $this->assertNull($event->getData()); }