/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/Form/Tests/FormConfigTest.php
137 строк
5 KB
Christian Flothmann
replace PHPUnit annotations with attributes
04 авг 2025, 10:05
04 авг 2025, 10:05
982f89c
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Tests; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\Form\FormConfigBuilder; use Symfony\Component\Form\NativeRequestHandler; /** * @author Bernhard Schussek <bschussek@gmail.com> */ class FormConfigTest extends TestCase { public static function getHtml4Ids() { return [ ['z0'], ['A0'], ['A9'], ['Z0'], ['#', 'Symfony\Component\Form\Exception\InvalidArgumentException'], ['a#', 'Symfony\Component\Form\Exception\InvalidArgumentException'], ['a$', 'Symfony\Component\Form\Exception\InvalidArgumentException'], ['a%', 'Symfony\Component\Form\Exception\InvalidArgumentException'], ['a ', 'Symfony\Component\Form\Exception\InvalidArgumentException'], ["a\t", 'Symfony\Component\Form\Exception\InvalidArgumentException'], ["a\n", 'Symfony\Component\Form\Exception\InvalidArgumentException'], ['a-'], ['a_'], ['a:'], // Periods are allowed by the HTML4 spec, but disallowed by us // because they break the generated property paths ['a.', 'Symfony\Component\Form\Exception\InvalidArgumentException'], // Contrary to the HTML4 spec, we allow names starting with a // number, otherwise naming fields by collection indices is not // possible. // For root forms, leading digits will be stripped from the // "id" attribute to produce valid HTML4. ['0'], ['9'], // Contrary to the HTML4 spec, we allow names starting with an // underscore, since this is already a widely used practice in // Symfony. // For root forms, leading underscores will be stripped from the // "id" attribute to produce valid HTML4. ['_'], // Integers are allowed [0], [123], // NULL is allowed [null], ]; } #[DataProvider('getHtml4Ids')] public function testNameAcceptsOnlyNamesValidAsIdsInHtml4($name, $expectedException = null) { if (null !== $expectedException) { $this->expectException($expectedException); } $formConfigBuilder = new FormConfigBuilder($name, null, new EventDispatcher()); $this->assertSame((string) $name, $formConfigBuilder->getName()); } public function testGetRequestHandlerCreatesNativeRequestHandlerIfNotSet() { $config = $this->getConfigBuilder()->getFormConfig(); $this->assertInstanceOf(NativeRequestHandler::class, $config->getRequestHandler()); } public function testGetRequestHandlerReusesNativeRequestHandlerInstance() { $config1 = $this->getConfigBuilder()->getFormConfig(); $config2 = $this->getConfigBuilder()->getFormConfig(); $this->assertSame($config1->getRequestHandler(), $config2->getRequestHandler()); } public function testSetMethodAllowsGet() { $formConfigBuilder = $this->getConfigBuilder(); $formConfigBuilder->setMethod('GET'); self::assertSame('GET', $formConfigBuilder->getMethod()); } public function testSetMethodAllowsPost() { $formConfigBuilder = $this->getConfigBuilder(); $formConfigBuilder->setMethod('POST'); self::assertSame('POST', $formConfigBuilder->getMethod()); } public function testSetMethodAllowsPut() { $formConfigBuilder = $this->getConfigBuilder(); $formConfigBuilder->setMethod('PUT'); self::assertSame('PUT', $formConfigBuilder->getMethod()); } public function testSetMethodAllowsDelete() { $formConfigBuilder = $this->getConfigBuilder(); $formConfigBuilder->setMethod('DELETE'); self::assertSame('DELETE', $formConfigBuilder->getMethod()); } public function testSetMethodAllowsPatch() { $formConfigBuilder = $this->getConfigBuilder(); $formConfigBuilder->setMethod('PATCH'); self::assertSame('PATCH', $formConfigBuilder->getMethod()); } private function getConfigBuilder($name = 'name') { return new FormConfigBuilder($name, null, new EventDispatcher()); } }