‪TYPO3CMS  11.5
TextareaViewHelperTest.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 ‪TextareaViewHelperTest extends FunctionalTestCase
30 {
31  public function ‪renderDataProvider(): array
32  {
33  return [
34  'renderCorrectlySetsTagName' => [
35  '<f:form.textarea />',
36  '<textarea name=""></textarea>',
37  ],
38  'renderCorrectlySetsNameAttributeAndContent' => [
39  '<f:form.textarea name="NameOfTextarea" value="Current value" />',
40  '<textarea name="NameOfTextarea">Current value</textarea>',
41  ],
42  'renderEscapesTextareaContent' => [
43  '<f:form.textarea name="NameOfTextarea" value="some <tag> & \"quotes\"" />',
44  '<textarea name="NameOfTextarea">some &lt;tag&gt; &amp; &quot;quotes&quot;</textarea>',
45  ],
46  'renderAddsPlaceholder' => [
47  '<f:form.textarea name="NameOfTextarea" placeholder="SomePlaceholder" />',
48  '<textarea placeholder="SomePlaceholder" name="NameOfTextarea"></textarea>',
49  ],
50  'renderAddsReadonly' => [
51  '<f:form.textarea name="NameOfTextarea" readonly="foo" />',
52  '<textarea readonly="foo" name="NameOfTextarea"></textarea>',
53  ],
54  'renderAddsRequired' => [
55  '<f:form.textarea name="NameOfTextarea" required="true" />',
56  '<textarea name="NameOfTextarea" required="required"></textarea>',
57  ],
58  ];
59  }
60 
65  public function ‪render(string $template, string $expected): void
66  {
67  $view = new ‪StandaloneView();
68  $view->setTemplateSource($template);
69  self::assertSame($expected, $view->render());
70  }
71 
75  public function ‪renderCallsSetErrorClassAttribute(): void
76  {
77  // Create an extbase request that contains mapping results of the form object property we're working with.
78  $mappingResult = new ‪Result();
79  $objectResult = $mappingResult->forProperty('myObjectName');
80  $propertyResult = $objectResult->forProperty('someProperty');
81  $propertyResult->addError(new ‪Error('invalidProperty', 2));
82  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
83  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
84  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
85  $extbaseRequest = new ‪Request($psr7Request);
86  GeneralUtility::addInstance(Request::class, $extbaseRequest);
87 
88  $formObject = new \stdClass();
89  $view = new ‪StandaloneView();
90  $view->assign('formObject', $formObject);
91  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.textarea property="someProperty" errorClass="myError" /></f:form>');
92  // The point is that 'class="myError"' is added since the form had mapping errors for this property.
93  self::assertStringContainsString('<textarea name="myFieldPrefix[myObjectName][someProperty]" class="myError"></textarea>', $view->render());
94  }
95 }
‪TYPO3\CMS\Extbase\Error\Result
Definition: Result.php:24
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form
Definition: ButtonViewHelperTest.php:18
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextareaViewHelperTest\render
‪render(string $template, string $expected)
Definition: TextareaViewHelperTest.php:65
‪TYPO3\CMS\Extbase\Error\Error
Definition: Error.php:25
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:37
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:31
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextareaViewHelperTest\renderDataProvider
‪renderDataProvider()
Definition: TextareaViewHelperTest.php:31
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextareaViewHelperTest\renderCallsSetErrorClassAttribute
‪renderCallsSetErrorClassAttribute()
Definition: TextareaViewHelperTest.php:75
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\TextareaViewHelperTest
Definition: TextareaViewHelperTest.php:30
‪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