‪TYPO3CMS  ‪main
RenderFormValueViewHelperTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
32 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
33 use TYPO3Fluid\Fluid\View\TemplateView;
34 
35 final class ‪RenderFormValueViewHelperTest extends FunctionalTestCase
36 {
37  protected array ‪$coreExtensionsToLoad = ['form'];
38 
39  public static function ‪renderDataProvider(): array
40  {
41  return [
42  'render processed value' => [
43  '<formvh:renderFormValue renderable="{element}" as="var">{var.processedValue}</formvh:renderFormValue>',
44  'element value',
45  ],
46  'uses local variable scope' => [
47  '<formvh:renderFormValue renderable="{element}" as="var"></formvh:renderFormValue>{var.processedValue}',
48  '',
49  ],
50  ];
51  }
52 
53  #[DataProvider('renderDataProvider')]
54  #[Test]
55  public function ‪render(string $template, string $expected): void
56  {
58  $definition = $this->‪buildFormDefinition();
59  $runtime = $definition->bind($this->‪buildExtbaseRequest());
60 
61  $element = $definition->getElementByIdentifier('text-1');
62 
63  $context = $this->get(RenderingContextFactory::class)->create();
64  $context->getVariableProvider()->add('element', $element);
65  $context->getViewHelperVariableContainer()
66  ->add(RenderRenderableViewHelper::class, 'formRuntime', $runtime);
67  $context->getTemplatePaths()->setTemplateSource($template);
68  self::assertSame($expected, (new TemplateView($context))->‪render());
69  }
70 
71  private function ‪buildExtbaseRequest(): ‪Request
72  {
73  $frontendUser = new ‪FrontendUserAuthentication();
74  $frontendUser->initializeUserSessionManager();
75  $serverRequest = (new ‪ServerRequest())
76  ->withAttribute('extbase', new ‪ExtbaseRequestParameters())
77  ->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_FE)
78  ->withAttribute('frontend.user', $frontendUser);
79 
80  ‪$GLOBALS['TYPO3_REQUEST'] = $serverRequest;
81 
82  return (new ‪Request($serverRequest))->withPluginName('Formframework');
83  }
84 
86  {
87  $formFactory = $this->get(ArrayFormFactory::class);
88  return $formFactory->build([
89  'type' => 'Form',
90  'identifier' => 'test',
91  'label' => 'test',
92  'prototypeName' => 'standard',
93  'renderables' => [
94  [
95  'type' => 'Page',
96  'identifier' => 'page-1',
97  'label' => 'Page',
98  'renderables' => [
99  [
100  'type' => 'Text',
101  'identifier' => 'text-1',
102  'label' => 'Text',
103  'defaultValue' => 'element value',
104  ],
105  ],
106  ],
107  ],
108  ]);
109  }
110 
111  private function ‪loadDefaultYamlConfigurations(): void
112  {
113  $configurationManager = $this->get(ConfigurationManagerInterface::class);
114  $configurationManager->setConfiguration([
115  'plugin.' => [
116  'tx_form.' => [
117  'settings.' => [
118  'yamlConfigurations.' => [
119  '10' => 'EXT:form/Configuration/Yaml/FormSetup.yaml',
120  ],
121  ],
122  ],
123  ],
124  ]);
125  }
126 }
‪TYPO3\CMS\Form\Domain\Factory\ArrayFormFactory
Definition: ArrayFormFactory.php:39
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest\buildFormDefinition
‪buildFormDefinition()
Definition: RenderFormValueViewHelperTest.php:85
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest\buildExtbaseRequest
‪buildExtbaseRequest()
Definition: RenderFormValueViewHelperTest.php:71
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest\$coreExtensionsToLoad
‪array $coreExtensionsToLoad
Definition: RenderFormValueViewHelperTest.php:37
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest
Definition: RenderFormValueViewHelperTest.php:36
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Form\ViewHelpers\RenderRenderableViewHelper
Definition: RenderRenderableViewHelper.php:41
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest\render
‪render(string $template, string $expected)
Definition: RenderFormValueViewHelperTest.php:55
‪TYPO3\CMS\Form\Domain\Model\FormDefinition
Definition: FormDefinition.php:224
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory
Definition: RenderingContextFactory.php:51
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest\loadDefaultYamlConfigurations
‪loadDefaultYamlConfigurations()
Definition: RenderFormValueViewHelperTest.php:111
‪TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication
Definition: FrontendUserAuthentication.php:33
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Form\Tests\Functional\ViewHelpers\RenderFormValueViewHelperTest\renderDataProvider
‪static renderDataProvider()
Definition: RenderFormValueViewHelperTest.php:39
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_FE
‪const REQUESTTYPE_FE
Definition: SystemEnvironmentBuilder.php:43
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35
‪TYPO3\CMS\Form\Mvc\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:29