‪TYPO3CMS  11.5
RadioViewHelperTest.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 ‪RadioViewHelperTest extends FunctionalTestCase
30 {
31  public function ‪renderDataProvider(): array
32  {
33  return [
34  'renderSetsTagNameAndDefaultAttributes' => [
35  '<f:form.radio name="foo" value="" />',
36  '<input type="radio" name="foo" value="" />',
37  ],
38  'renderSetsCheckedAttributeIfSpecified' => [
39  '<f:form.radio name="foo" value="" checked="true" />',
40  '<input type="radio" name="foo" value="" checked="checked" />',
41  ],
42  ];
43  }
44 
49  public function ‪render(string $template, string $expected): void
50  {
51  $view = new ‪StandaloneView();
52  $view->setTemplateSource($template);
53  self::assertSame($expected, $view->render());
54  }
55 
60  {
61  $formObject = new \stdClass();
62  $formObject->someProperty = false;
63  $view = new ‪StandaloneView();
64  $view->assign('formObject', $formObject);
65  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" checked="true" /></f:form>');
66  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" checked="checked" />', $view->render());
67  }
68 
73  {
74  $formObject = new \stdClass();
75  $formObject->someProperty = true;
76  $view = new ‪StandaloneView();
77  $view->assign('formObject', $formObject);
78  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" /></f:form>');
79  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" checked="checked" />', $view->render());
80  }
81 
86  {
87  $formObject = new \stdClass();
88  $formObject->someProperty = [];
89  $view = new ‪StandaloneView();
90  $view->assign('formObject', $formObject);
91  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" /></f:form>');
92  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" />', $view->render());
93  }
94 
99  {
100  $formObject = new \stdClass();
101  $formObject->someProperty = '';
102  $view = new ‪StandaloneView();
103  $view->assign('formObject', $formObject);
104  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" /></f:form>');
105  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" />', $view->render());
106  }
107 
112  {
113  $formObject = new \stdClass();
114  $formObject->someProperty = null;
115  $view = new ‪StandaloneView();
116  $view->assign('formObject', $formObject);
117  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" /></f:form>');
118  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" />', $view->render());
119  }
120 
124  public function ‪renderCallSetsErrorClassAttribute(): void
125  {
126  // Create an extbase request that contains mapping results of the form object property we're working with.
127  $mappingResult = new ‪Result();
128  $objectResult = $mappingResult->forProperty('myObjectName');
129  $propertyResult = $objectResult->forProperty('someProperty');
130  $propertyResult->addError(new ‪Error('invalidProperty', 2));
131  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
132  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
133  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
134  $extbaseRequest = new ‪Request($psr7Request);
135  GeneralUtility::addInstance(Request::class, $extbaseRequest);
136 
137  $formObject = new \stdClass();
138  $view = new ‪StandaloneView();
139  $view->assign('formObject', $formObject);
140  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" errorClass="myError" /></f:form>');
141  // The point is that 'class="myError"' is added since the form had mapping errors for this property.
142  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" class="myError" />', $view->render());
143  }
144 
149  {
150  $mappingResult = new ‪Result();
151  $objectResult = $mappingResult->forProperty('myObjectName');
152  $propertyResult = $objectResult->forProperty('someProperty');
153  $propertyResult->addError(new ‪Error('invalidProperty', 2));
154  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
155  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
156  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
157  $extbaseRequest = new ‪Request($psr7Request);
158  GeneralUtility::addInstance(Request::class, $extbaseRequest);
159 
160  $formObject = new \stdClass();
161  $view = new ‪StandaloneView();
162  $view->assign('formObject', $formObject);
163  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" /></f:form>');
164  self::assertStringContainsString('<input type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" class="f3-form-error" />', $view->render());
165  }
166 
171  {
172  $mappingResult = new ‪Result();
173  $objectResult = $mappingResult->forProperty('myObjectName');
174  $propertyResult = $objectResult->forProperty('someProperty');
175  $propertyResult->addError(new ‪Error('invalidProperty', 2));
176  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
177  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
178  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
179  $extbaseRequest = new ‪Request($psr7Request);
180  GeneralUtility::addInstance(Request::class, $extbaseRequest);
181 
182  $formObject = new \stdClass();
183  $view = new ‪StandaloneView();
184  $view->assign('formObject', $formObject);
185  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.radio value="foo" property="someProperty" class="myClass" /></f:form>');
186  self::assertStringContainsString('<input class="myClass f3-form-error" type="radio" name="myFieldPrefix[myObjectName][someProperty]" value="foo" />', $view->render());
187  }
188 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderDoesNotAppendSquareBracketsToNameAttributeIfBoundToAPropertyOfTypeArray
‪renderDoesNotAppendSquareBracketsToNameAttributeIfBoundToAPropertyOfTypeArray()
Definition: RadioViewHelperTest.php:85
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\render
‪render(string $template, string $expected)
Definition: RadioViewHelperTest.php:49
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderDoesNotSetsCheckedAttributeIfBoundPropertyIsNull
‪renderDoesNotSetsCheckedAttributeIfBoundPropertyIsNull()
Definition: RadioViewHelperTest.php:111
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderCallSetsErrorClassAttribute
‪renderCallSetsErrorClassAttribute()
Definition: RadioViewHelperTest.php:124
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderCallSetsStandardErrorClassAttributeIfNonIsSpecified
‪renderCallSetsStandardErrorClassAttributeIfNonIsSpecified()
Definition: RadioViewHelperTest.php:148
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderDataProvider
‪renderDataProvider()
Definition: RadioViewHelperTest.php:31
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderIgnoresBoundPropertyIfCheckedIsSet
‪renderIgnoresBoundPropertyIfCheckedIsSet()
Definition: RadioViewHelperTest.php:59
‪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\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderCallExtendsClassAttributeWithErrorClass
‪renderCallExtendsClassAttributeWithErrorClass()
Definition: RadioViewHelperTest.php:170
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:37
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeString
‪renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeString()
Definition: RadioViewHelperTest.php:98
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest
Definition: RadioViewHelperTest.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\Fluid\Tests\Functional\ViewHelpers\Form\RadioViewHelperTest\renderCorrectlySetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeBoolean
‪renderCorrectlySetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeBoolean()
Definition: RadioViewHelperTest.php:72
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:39