diff --git a/src/Symfony/Bridge/Twig/Test/FormLayoutTestCase.php b/src/Symfony/Bridge/Twig/Test/FormLayoutTestCase.php new file mode 100644 index 000000000000..71a71530831e --- /dev/null +++ b/src/Symfony/Bridge/Twig/Test/FormLayoutTestCase.php @@ -0,0 +1,150 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bridge\Twig\Test; + +use Symfony\Bridge\Twig\Form\TwigRendererEngine; +use Symfony\Bridge\Twig\Test\Traits\RuntimeLoaderProvider; +use Symfony\Component\Form\FormRenderer; +use Symfony\Component\Form\FormRendererInterface; +use Symfony\Component\Form\FormView; +use Symfony\Component\Form\Test\FormIntegrationTestCase; +use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; +use Twig\Environment; +use Twig\Loader\FilesystemLoader; + +/** + * @author Romain Monteil + */ +abstract class FormLayoutTestCase extends FormIntegrationTestCase +{ + use RuntimeLoaderProvider; + + protected FormRendererInterface $renderer; + + protected function setUp(): void + { + parent::setUp(); + + $loader = new FilesystemLoader($this->getTemplatePaths()); + + $environment = new Environment($loader, ['strict_variables' => true]); + $environment->setExtensions($this->getTwigExtensions()); + + foreach ($this->getTwigGlobals() as $name => $value) { + $environment->addGlobal($name, $value); + } + + $rendererEngine = new TwigRendererEngine($this->getThemes(), $environment); + $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); + $this->registerTwigRuntimeLoader($environment, $this->renderer); + } + + protected function assertMatchesXpath($html, $expression, $count = 1): void + { + $dom = new \DOMDocument('UTF-8'); + + $html = preg_replace('/(]+)(?/', '$1/>', $html); + + try { + // Wrap in node so we can load HTML with multiple tags at + // the top level + $dom->loadXML(''.$html.''); + } catch (\Exception $e) { + $this->fail(sprintf( + "Failed loading HTML:\n\n%s\n\nError: %s", + $html, + $e->getMessage() + )); + } + $xpath = new \DOMXPath($dom); + $nodeList = $xpath->evaluate('/root'.$expression); + + if ($nodeList->length != $count) { + $dom->formatOutput = true; + $this->fail(sprintf( + "Failed asserting that \n\n%s\n\nmatches exactly %s. Matches %s in \n\n%s", + $expression, + 1 == $count ? 'once' : $count.' times', + 1 == $nodeList->length ? 'once' : $nodeList->length.' times', + // strip away and + substr($dom->saveHTML(), 6, -8) + )); + } else { + $this->addToAssertionCount(1); + } + } + + abstract protected function getTemplatePaths(): array; + + abstract protected function getTwigExtensions(): array; + + protected function getTwigGlobals(): array + { + return []; + } + + abstract protected function getThemes(): array; + + protected function renderForm(FormView $view, array $vars = []): string + { + return $this->renderer->renderBlock($view, 'form', $vars); + } + + protected function renderLabel(FormView $view, $label = null, array $vars = []): string + { + if (null !== $label) { + $vars += ['label' => $label]; + } + + return $this->renderer->searchAndRenderBlock($view, 'label', $vars); + } + + protected function renderHelp(FormView $view): string + { + return $this->renderer->searchAndRenderBlock($view, 'help'); + } + + protected function renderErrors(FormView $view): string + { + return $this->renderer->searchAndRenderBlock($view, 'errors'); + } + + protected function renderWidget(FormView $view, array $vars = []): string + { + return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); + } + + protected function renderRow(FormView $view, array $vars = []): string + { + return $this->renderer->searchAndRenderBlock($view, 'row', $vars); + } + + protected function renderRest(FormView $view, array $vars = []): string + { + return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); + } + + protected function renderStart(FormView $view, array $vars = []): string + { + return $this->renderer->renderBlock($view, 'form_start', $vars); + } + + protected function renderEnd(FormView $view, array $vars = []): string + { + return $this->renderer->renderBlock($view, 'form_end', $vars); + } + + protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true): void + { + $this->renderer->setTheme($view, $themes, $useDefaultThemes); + } +} diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php b/src/Symfony/Bridge/Twig/Test/Traits/RuntimeLoaderProvider.php similarity index 94% rename from src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php rename to src/Symfony/Bridge/Twig/Test/Traits/RuntimeLoaderProvider.php index dea148192475..1025288bc312 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php +++ b/src/Symfony/Bridge/Twig/Test/Traits/RuntimeLoaderProvider.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Bridge\Twig\Tests\Extension; +namespace Symfony\Bridge\Twig\Test\Traits; use Symfony\Component\Form\FormRenderer; use Twig\Environment; diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/AbstractLayoutTestCase.php b/src/Symfony/Bridge/Twig/Tests/Extension/AbstractLayoutTestCase.php index d9bab6cdaaf1..fc9eff09a375 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/AbstractLayoutTestCase.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/AbstractLayoutTestCase.php @@ -12,19 +12,19 @@ namespace Symfony\Bridge\Twig\Tests\Extension; use PHPUnit\Framework\MockObject\MockObject; +use Symfony\Bridge\Twig\Test\FormLayoutTestCase; use Symfony\Component\Form\Extension\Core\Type\PercentType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Csrf\CsrfExtension; use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormView; -use Symfony\Component\Form\Test\FormIntegrationTestCase; use Symfony\Component\Form\Tests\VersionAwareTest; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Translation\TranslatableMessage; use Symfony\Contracts\Translation\TranslatableInterface; use Symfony\Contracts\Translation\TranslatorInterface; -abstract class AbstractLayoutTestCase extends FormIntegrationTestCase +abstract class AbstractLayoutTestCase extends FormLayoutTestCase { use VersionAwareTest; @@ -61,49 +61,6 @@ protected function tearDown(): void parent::tearDown(); } - protected function assertXpathNodeValue(\DOMElement $element, $expression, $nodeValue) - { - $xpath = new \DOMXPath($element->ownerDocument); - $nodeList = $xpath->evaluate($expression); - $this->assertEquals(1, $nodeList->length); - $this->assertEquals($nodeValue, $nodeList->item(0)->nodeValue); - } - - protected function assertMatchesXpath($html, $expression, $count = 1) - { - $dom = new \DOMDocument('UTF-8'); - - $html = preg_replace('/(]+)(?/', '$1/>', $html); - - try { - // Wrap in node so we can load HTML with multiple tags at - // the top level - $dom->loadXML(''.$html.''); - } catch (\Exception $e) { - $this->fail(sprintf( - "Failed loading HTML:\n\n%s\n\nError: %s", - $html, - $e->getMessage() - )); - } - $xpath = new \DOMXPath($dom); - $nodeList = $xpath->evaluate('/root'.$expression); - - if ($nodeList->length != $count) { - $dom->formatOutput = true; - $this->fail(sprintf( - "Failed asserting that \n\n%s\n\nmatches exactly %s. Matches %s in \n\n%s", - $expression, - 1 == $count ? 'once' : $count.' times', - 1 == $nodeList->length ? 'once' : $nodeList->length.' times', - // strip away and - substr($dom->saveHTML(), 6, -8) - )); - } else { - $this->addToAssertionCount(1); - } - } - protected function assertWidgetMatchesXpath(FormView $view, array $vars, $xpath) { // include ampersands everywhere to validate escaping @@ -125,29 +82,6 @@ protected function assertWidgetMatchesXpath(FormView $view, array $vars, $xpath) $this->assertMatchesXpath($html, $xpath); } - abstract protected function renderForm(FormView $view, array $vars = []); - - abstract protected function renderLabel(FormView $view, $label = null, array $vars = []); - - protected function renderHelp(FormView $view) - { - $this->markTestSkipped(sprintf('%s::renderHelp() is not implemented.', static::class)); - } - - abstract protected function renderErrors(FormView $view); - - abstract protected function renderWidget(FormView $view, array $vars = []); - - abstract protected function renderRow(FormView $view, array $vars = []); - - abstract protected function renderRest(FormView $view, array $vars = []); - - abstract protected function renderStart(FormView $view, array $vars = []); - - abstract protected function renderEnd(FormView $view, array $vars = []); - - abstract protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true); - public function testLabel() { $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType'); diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php index 2f5289ceda06..b15f4e6895a2 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php @@ -13,96 +13,35 @@ use Symfony\Bridge\Twig\Extension\FormExtension; use Symfony\Bridge\Twig\Extension\TranslationExtension; -use Symfony\Bridge\Twig\Form\TwigRendererEngine; use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator; -use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; -use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; -use Twig\Environment; -use Twig\Loader\FilesystemLoader; class FormExtensionBootstrap3HorizontalLayoutTest extends AbstractBootstrap3HorizontalLayoutTestCase { - use RuntimeLoaderProvider; - protected array $testableFeatures = [ 'choice_attr', ]; - private FormRenderer $renderer; - - protected function setUp(): void + protected function getTemplatePaths(): array { - parent::setUp(); - - $loader = new FilesystemLoader([ + return [ __DIR__.'/../../Resources/views/Form', __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'bootstrap_3_horizontal_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - - protected function renderForm(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []) - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'help'); + ]; } - protected function renderErrors(FormView $view) + protected function getTwigExtensions(): array { - return $this->renderer->searchAndRenderBlock($view, 'errors'); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function renderWidget(FormView $view, array $vars = []) + protected function getThemes(): array { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); - } - - protected function renderStart(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form_start', $vars); - } - - protected function renderEnd(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form_end', $vars); - } - - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true) - { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'bootstrap_3_horizontal_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php index bb0f5687ed57..90a1756361d9 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3LayoutTest.php @@ -16,38 +16,12 @@ use Symfony\Bridge\Twig\Form\TwigRendererEngine; use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator; use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Twig\Environment; use Twig\Loader\FilesystemLoader; class FormExtensionBootstrap3LayoutTest extends AbstractBootstrap3LayoutTestCase { - use RuntimeLoaderProvider; - - private FormRenderer $renderer; - - protected function setUp(): void - { - parent::setUp(); - - $loader = new FilesystemLoader([ - __DIR__.'/../../Resources/views/Form', - __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'bootstrap_3_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - public function testStartTagHasNoActionAttributeWhenActionIsEmpty() { $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [ @@ -102,57 +76,27 @@ public function testMoneyWidgetInIso() , trim($this->renderWidget($view))); } - protected function renderForm(FormView $view, array $vars = []) + protected function getTemplatePaths(): array { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []) - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'help'); - } - - protected function renderErrors(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'errors'); - } - - protected function renderWidget(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); - } - - protected function renderStart(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form_start', $vars); + return [ + __DIR__.'/../../Resources/views/Form', + __DIR__.'/Fixtures/templates/form', + ]; } - protected function renderEnd(FormView $view, array $vars = []) + protected function getTwigExtensions(): array { - return $this->renderer->renderBlock($view, 'form_end', $vars); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true) + protected function getThemes(): array { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'bootstrap_3_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php index a7d6c04e4b37..dbc2827f1315 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4HorizontalLayoutTest.php @@ -13,13 +13,7 @@ use Symfony\Bridge\Twig\Extension\FormExtension; use Symfony\Bridge\Twig\Extension\TranslationExtension; -use Symfony\Bridge\Twig\Form\TwigRendererEngine; use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator; -use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; -use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; -use Twig\Environment; -use Twig\Loader\FilesystemLoader; /** * Class providing test cases for the Bootstrap 4 Twig form theme. @@ -28,86 +22,31 @@ */ class FormExtensionBootstrap4HorizontalLayoutTest extends AbstractBootstrap4HorizontalLayoutTestCase { - use RuntimeLoaderProvider; - protected array $testableFeatures = [ 'choice_attr', ]; - private FormRenderer $renderer; - - protected function setUp(): void + protected function getTemplatePaths(): array { - parent::setUp(); - - $loader = new FilesystemLoader([ + return [ __DIR__.'/../../Resources/views/Form', __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'bootstrap_4_horizontal_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - - protected function renderForm(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []) - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'help'); + ]; } - protected function renderErrors(FormView $view) + protected function getTwigExtensions(): array { - return $this->renderer->searchAndRenderBlock($view, 'errors'); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function renderWidget(FormView $view, array $vars = []) + protected function getThemes(): array { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); - } - - protected function renderStart(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form_start', $vars); - } - - protected function renderEnd(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form_end', $vars); - } - - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true) - { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'bootstrap_4_horizontal_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php index 3aecccf1df7f..bffebe3f6425 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap4LayoutTest.php @@ -16,7 +16,6 @@ use Symfony\Bridge\Twig\Form\TwigRendererEngine; use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator; use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Twig\Environment; use Twig\Loader\FilesystemLoader; @@ -28,31 +27,6 @@ */ class FormExtensionBootstrap4LayoutTest extends AbstractBootstrap4LayoutTestCase { - use RuntimeLoaderProvider; - - private FormRenderer $renderer; - - protected function setUp(): void - { - parent::setUp(); - - $loader = new FilesystemLoader([ - __DIR__.'/../../Resources/views/Form', - __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'bootstrap_4_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - public function testStartTagHasNoActionAttributeWhenActionIsEmpty() { $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [ @@ -107,57 +81,27 @@ public function testMoneyWidgetInIso() , trim($this->renderWidget($view))); } - protected function renderForm(FormView $view, array $vars = []) + protected function getTemplatePaths(): array { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []) - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'help'); - } - - protected function renderErrors(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'errors'); - } - - protected function renderWidget(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); - } - - protected function renderStart(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form_start', $vars); + return [ + __DIR__.'/../../Resources/views/Form', + __DIR__.'/Fixtures/templates/form', + ]; } - protected function renderEnd(FormView $view, array $vars = []) + protected function getTwigExtensions(): array { - return $this->renderer->renderBlock($view, 'form_end', $vars); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true) + protected function getThemes(): array { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'bootstrap_4_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5HorizontalLayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5HorizontalLayoutTest.php index 9682129e3fbf..54c8e5afd44f 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5HorizontalLayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5HorizontalLayoutTest.php @@ -13,13 +13,7 @@ use Symfony\Bridge\Twig\Extension\FormExtension; use Symfony\Bridge\Twig\Extension\TranslationExtension; -use Symfony\Bridge\Twig\Form\TwigRendererEngine; use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator; -use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; -use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; -use Twig\Environment; -use Twig\Loader\FilesystemLoader; /** * Class providing test cases for the Bootstrap 5 horizontal Twig form theme. @@ -28,86 +22,31 @@ */ class FormExtensionBootstrap5HorizontalLayoutTest extends AbstractBootstrap5HorizontalLayoutTestCase { - use RuntimeLoaderProvider; - protected array $testableFeatures = [ 'choice_attr', ]; - private FormRenderer $renderer; - - protected function setUp(): void + protected function getTemplatePaths(): array { - parent::setUp(); - - $loader = new FilesystemLoader([ + return [ __DIR__.'/../../Resources/views/Form', __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'bootstrap_5_horizontal_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder(CsrfTokenManagerInterface::class)->getMock()); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - - protected function renderForm(FormView $view, array $vars = []): string - { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []): string - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view): string - { - return $this->renderer->searchAndRenderBlock($view, 'help'); + ]; } - protected function renderErrors(FormView $view): string + protected function getTwigExtensions(): array { - return $this->renderer->searchAndRenderBlock($view, 'errors'); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function renderWidget(FormView $view, array $vars = []): string + protected function getThemes(): array { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []): string - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []): string - { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); - } - - protected function renderStart(FormView $view, array $vars = []): string - { - return $this->renderer->renderBlock($view, 'form_start', $vars); - } - - protected function renderEnd(FormView $view, array $vars = []): string - { - return $this->renderer->renderBlock($view, 'form_end', $vars); - } - - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true): void - { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'bootstrap_5_horizontal_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5LayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5LayoutTest.php index 66f6bbb95a29..e7e537ac5ae4 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5LayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap5LayoutTest.php @@ -18,7 +18,6 @@ use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\MoneyType; use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Twig\Environment; use Twig\Loader\FilesystemLoader; @@ -30,31 +29,6 @@ */ class FormExtensionBootstrap5LayoutTest extends AbstractBootstrap5LayoutTestCase { - use RuntimeLoaderProvider; - - private FormRenderer $renderer; - - protected function setUp(): void - { - parent::setUp(); - - $loader = new FilesystemLoader([ - __DIR__.'/../../Resources/views/Form', - __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'bootstrap_5_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->getMockBuilder(CsrfTokenManagerInterface::class)->getMock()); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - public function testStartTagHasNoActionAttributeWhenActionIsEmpty() { $form = $this->factory->create(FormType::class, null, [ @@ -106,57 +80,27 @@ public function testMoneyWidgetInIso() , trim($this->renderWidget($view))); } - protected function renderForm(FormView $view, array $vars = []): string + protected function getTemplatePaths(): array { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []): string - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view): string - { - return $this->renderer->searchAndRenderBlock($view, 'help'); - } - - protected function renderErrors(FormView $view): string - { - return $this->renderer->searchAndRenderBlock($view, 'errors'); - } - - protected function renderWidget(FormView $view, array $vars = []): string - { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []): string - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []): string - { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); - } - - protected function renderStart(FormView $view, array $vars = []): string - { - return $this->renderer->renderBlock($view, 'form_start', $vars); + return [ + __DIR__.'/../../Resources/views/Form', + __DIR__.'/Fixtures/templates/form', + ]; } - protected function renderEnd(FormView $view, array $vars = []): string + protected function getTwigExtensions(): array { - return $this->renderer->renderBlock($view, 'form_end', $vars); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true): void + protected function getThemes(): array { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'bootstrap_5_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php index c9dec6e24843..fa0f1824e0ec 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionDivLayoutTest.php @@ -24,34 +24,6 @@ class FormExtensionDivLayoutTest extends AbstractDivLayoutTestCase { - use RuntimeLoaderProvider; - - private FormRenderer $renderer; - - protected function setUp(): void - { - parent::setUp(); - - $loader = new FilesystemLoader([ - __DIR__.'/../../Resources/views/Form', - __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addGlobal('global', ''); - // the value can be any template that exists - $environment->addGlobal('dynamic_template_name', 'child_label'); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'form_div_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - public function testThemeBlockInheritanceUsingUse() { $view = $this->factory @@ -323,71 +295,50 @@ public function testLabelHtmlIsTrue() $this->assertMatchesXpath($html, '/label[@for="name"][@class="my&class required"]/b[.="Bolded label"]'); } - protected function renderForm(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []) - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'help'); - } - - protected function renderErrors(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'errors'); - } - - protected function renderWidget(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []) + public static function themeBlockInheritanceProvider() { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); + return [ + [['theme.html.twig']], + ]; } - protected function renderStart(FormView $view, array $vars = []) + public static function themeInheritanceProvider() { - return $this->renderer->renderBlock($view, 'form_start', $vars); + return [ + [['parent_label.html.twig'], ['child_label.html.twig']], + ]; } - protected function renderEnd(FormView $view, array $vars = []) + protected function getTemplatePaths(): array { - return $this->renderer->renderBlock($view, 'form_end', $vars); + return [ + __DIR__.'/../../Resources/views/Form', + __DIR__.'/Fixtures/templates/form', + ]; } - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true) + protected function getTwigExtensions(): array { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - public static function themeBlockInheritanceProvider() + protected function getTwigGlobals(): array { return [ - [['theme.html.twig']], + 'global' => '', + // the value can be any template that exists + 'dynamic_template_name' => 'child_label', ]; } - public static function themeInheritanceProvider() + protected function getThemes(): array { return [ - [['parent_label.html.twig'], ['child_label.html.twig']], + 'form_div_layout.html.twig', + 'custom_widgets.html.twig', ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionTableLayoutTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionTableLayoutTest.php index 751d2b1f81e5..2ab48be2aca8 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionTableLayoutTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionTableLayoutTest.php @@ -13,42 +13,10 @@ use Symfony\Bridge\Twig\Extension\FormExtension; use Symfony\Bridge\Twig\Extension\TranslationExtension; -use Symfony\Bridge\Twig\Form\TwigRendererEngine; use Symfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator; -use Symfony\Component\Form\FormRenderer; -use Symfony\Component\Form\FormView; -use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; -use Twig\Environment; -use Twig\Loader\FilesystemLoader; class FormExtensionTableLayoutTest extends AbstractTableLayoutTestCase { - use RuntimeLoaderProvider; - - private FormRenderer $renderer; - - protected function setUp(): void - { - parent::setUp(); - - $loader = new FilesystemLoader([ - __DIR__.'/../../Resources/views/Form', - __DIR__.'/Fixtures/templates/form', - ]); - - $environment = new Environment($loader, ['strict_variables' => true]); - $environment->addExtension(new TranslationExtension(new StubTranslator())); - $environment->addGlobal('global', ''); - $environment->addExtension(new FormExtension()); - - $rendererEngine = new TwigRendererEngine([ - 'form_table_layout.html.twig', - 'custom_widgets.html.twig', - ], $environment); - $this->renderer = new FormRenderer($rendererEngine, $this->createMock(CsrfTokenManagerInterface::class)); - $this->registerTwigRuntimeLoader($environment, $this->renderer); - } - public function testStartTagHasNoActionAttributeWhenActionIsEmpty() { $form = $this->factory->create('Symfony\Component\Form\Extension\Core\Type\FormType', null, [ @@ -209,57 +177,34 @@ public function testLabelHtmlIsTrue() $this->assertMatchesXpath($html, '/label[@for="name"][@class="my&class required"]/b[.="Bolded label"]'); } - protected function renderForm(FormView $view, array $vars = []) - { - return $this->renderer->renderBlock($view, 'form', $vars); - } - - protected function renderLabel(FormView $view, $label = null, array $vars = []) - { - if (null !== $label) { - $vars += ['label' => $label]; - } - - return $this->renderer->searchAndRenderBlock($view, 'label', $vars); - } - - protected function renderHelp(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'help'); - } - - protected function renderErrors(FormView $view) - { - return $this->renderer->searchAndRenderBlock($view, 'errors'); - } - - protected function renderWidget(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'widget', $vars); - } - - protected function renderRow(FormView $view, array $vars = []) - { - return $this->renderer->searchAndRenderBlock($view, 'row', $vars); - } - - protected function renderRest(FormView $view, array $vars = []) + protected function getTemplatePaths(): array { - return $this->renderer->searchAndRenderBlock($view, 'rest', $vars); + return [ + __DIR__.'/../../Resources/views/Form', + __DIR__.'/Fixtures/templates/form', + ]; } - protected function renderStart(FormView $view, array $vars = []) + protected function getTwigExtensions(): array { - return $this->renderer->renderBlock($view, 'form_start', $vars); + return [ + new TranslationExtension(new StubTranslator()), + new FormExtension(), + ]; } - protected function renderEnd(FormView $view, array $vars = []) + protected function getTwigGlobals(): array { - return $this->renderer->renderBlock($view, 'form_end', $vars); + return [ + 'global' => '', + ]; } - protected function setTheme(FormView $view, array $themes, $useDefaultThemes = true) + protected function getThemes(): array { - $this->renderer->setTheme($view, $themes, $useDefaultThemes); + return [ + 'form_table_layout.html.twig', + 'custom_widgets.html.twig', + ]; } } diff --git a/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php b/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php index cf9819123305..a54f2c140326 100644 --- a/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php @@ -13,7 +13,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Bridge\Twig\Node\FormThemeNode; -use Symfony\Bridge\Twig\Tests\Extension\RuntimeLoaderProvider; +use Symfony\Bridge\Twig\Test\Traits\RuntimeLoaderProvider; use Symfony\Component\Form\FormRenderer; use Symfony\Component\Form\FormRendererEngineInterface; use Twig\Compiler; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy