‪TYPO3CMS  11.5
TextfieldViewHelperTest.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 
27 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
28 
29 class ‪TextfieldViewHelperTest extends FunctionalTestCase
30 {
31  public function ‪renderDataProvider(): array
32  {
33  return [
34  'renderCorrectlySetsTagName' => [
35  '<f:form.textfield />',
36  '<input type="text" name="" />',
37  ],
38  'renderCorrectlySetsTypeNameAndValueAttributes' => [
39  '<f:form.textfield name="NameOfTextfield" value="Current value" type="text" />',
40  '<input type="text" name="NameOfTextfield" value="Current value" />',
41  ],
42  'renderAddsPlaceholder' => [
43  '<f:form.textfield name="NameOfTextfield" placeholder="SomePlaceholder" />',
44  '<input placeholder="SomePlaceholder" type="text" name="NameOfTextfield" />',
45  ],
46  'renderCorrectlySetsRequiredAttribute' => [
47  '<f:form.textfield required="true" name="NameOfTextfield" />',
48  '<input type="text" name="NameOfTextfield" required="required" />',
49  ],
50  ];
51  }
52 
57  public function ‪render(string $template, string $expected): void
58  {
59  $view = new ‪StandaloneView();
60  $view->setTemplateSource($template);
61  self::assertSame($expected, $view->render());
62  }
63 
67  public function ‪renderCallsSetErrorClassAttribute(): void
68  {
69  // Create an extbase request that contains mapping results of the form object property we're working with.
70  $mappingResult = new ‪Result();
71  $objectResult = $mappingResult->forProperty('myObjectName');
72  $propertyResult = $objectResult->forProperty('someProperty');
73  $propertyResult->addError(new ‪Error('invalidProperty', 2));
74  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
75  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
76  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
77  $extbaseRequest = new ‪Request($psr7Request);
78  GeneralUtility::addInstance(Request::class, $extbaseRequest);
79 
80  $formObject = new \stdClass();
81  $view = new ‪StandaloneView();
82  $view->assign('formObject', $formObject);
83  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.textfield property="someProperty" errorClass="myError" /></f:form>');
84  // The point is that 'class="myError"' is added since the form had mapping errors for this property.
85  self::assertStringContainsString('<input type="text" name="myFieldPrefix[myObjectName][someProperty]" class="myError" />', $view->render());
86  }
87 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextfieldViewHelperTest\renderCallsSetErrorClassAttribute
‪renderCallsSetErrorClassAttribute()
Definition: TextfieldViewHelperTest.php:67
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextfieldViewHelperTest\render
‪render(string $template, string $expected)
Definition: TextfieldViewHelperTest.php:57
‪TYPO3\CMS\Extbase\Error\Result
Definition: Result.php:24
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form
Definition: ButtonViewHelperTest.php:18
‪TYPO3\CMS\Extbase\Error\Error
Definition: Error.php:25
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:37
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextfieldViewHelperTest\renderDataProvider
‪renderDataProvider()
Definition: TextfieldViewHelperTest.php:31
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextfieldViewHelperTest
Definition: TextfieldViewHelperTest.php:30
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:31
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:33
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:39