‪TYPO3CMS  11.5
CheckboxViewHelperTest.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 ‪CheckboxViewHelperTest extends FunctionalTestCase
30 {
31  public function ‪renderDataProvider(): array
32  {
33  return [
34  'renderCorrectlySetsTagNameAndDefaultAttributes' => [
35  '<f:form.checkbox name="foo" value="" />',
36  '<input type="hidden" name="foo" value="" /><input type="checkbox" name="foo" value="" />',
37  ],
38  'renderSetsCheckedAttributeIfSpecified' => [
39  '<f:form.checkbox name="foo" value="" checked="true" />',
40  '<input type="hidden" name="foo" value="" /><input type="checkbox" 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.checkbox value="foo" property="someProperty" checked="true" /></f:form>');
66  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" 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.checkbox value="foo" property="someProperty" /></f:form>');
79  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" 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.checkbox value="foo" property="someProperty" /></f:form>');
92  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" name="myFieldPrefix[myObjectName][someProperty][]" value="foo" />', $view->render());
93  }
94 
99  {
100  $formObject = new \stdClass();
101  $formObject->someProperty = ['foo'];
102  $view = new ‪StandaloneView();
103  $view->assign('formObject', $formObject);
104  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="foo" property="someProperty" /></f:form>');
105  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" name="myFieldPrefix[myObjectName][someProperty][]" value="foo" checked="checked" />', $view->render());
106  }
107 
112  {
113  $formObject = new \ArrayObject(['someProperty' => true]);
114  $view = new ‪StandaloneView();
115  $view->assign('formObject', $formObject);
116  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="bar" property="someProperty" /></f:form>');
117  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" name="myFieldPrefix[myObjectName][someProperty]" value="bar" checked="checked" />', $view->render());
118  }
119 
124  {
125  $formObject = new \stdClass();
126  $formObject->someProperty = 'bar';
127  $view = new ‪StandaloneView();
128  $view->assign('formObject', $formObject);
129  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="foo" property="someProperty" /></f:form>');
130  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" name="myFieldPrefix[myObjectName][someProperty]" value="foo" checked="checked" />', $view->render());
131  }
132 
137  {
138  $formObject = new \stdClass();
139  $formObject->someProperty = null;
140  $view = new ‪StandaloneView();
141  $view->assign('formObject', $formObject);
142  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="foo" property="someProperty" /></f:form>');
143  self::assertStringContainsString('<input type="hidden" name="myFieldPrefix[myObjectName][someProperty]" value="" /><input type="checkbox" name="myFieldPrefix[myObjectName][someProperty]" value="foo" />', $view->render());
144  }
145 
149  public function ‪renderCallSetsErrorClassAttribute(): void
150  {
151  // Create an extbase request that contains mapping results of the form object property we're working with.
152  $mappingResult = new ‪Result();
153  $objectResult = $mappingResult->forProperty('myObjectName');
154  $propertyResult = $objectResult->forProperty('someProperty');
155  $propertyResult->addError(new ‪Error('invalidProperty', 2));
156  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
157  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
158  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
159  $extbaseRequest = new ‪Request($psr7Request);
160  GeneralUtility::addInstance(Request::class, $extbaseRequest);
161 
162  $formObject = new \stdClass();
163  $view = new ‪StandaloneView();
164  $view->assign('formObject', $formObject);
165  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="foo" property="someProperty" errorClass="myError" /></f:form>');
166  // The point is that 'class="myError"' is added since the form had mapping errors for this property.
167  self::assertStringContainsString('<input type="checkbox" name="myFieldPrefix[myObjectName][someProperty]" value="foo" class="myError" />', $view->render());
168  }
169 
174  {
175  // Create an extbase request that contains mapping results of the form object property we're working with.
176  $mappingResult = new ‪Result();
177  $objectResult = $mappingResult->forProperty('myObjectName');
178  $propertyResult = $objectResult->forProperty('someProperty');
179  $propertyResult->addError(new ‪Error('invalidProperty', 2));
180  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
181  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
182  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
183  $extbaseRequest = new ‪Request($psr7Request);
184  GeneralUtility::addInstance(Request::class, $extbaseRequest);
185 
186  $formObject = new \stdClass();
187  $view = new ‪StandaloneView();
188  $view->assign('formObject', $formObject);
189  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="foo" property="someProperty" /></f:form>');
190  // The point is that 'class="myError"' is added since the form had mapping errors for this property.
191  self::assertStringContainsString('<input type="checkbox" name="myFieldPrefix[myObjectName][someProperty]" value="foo" class="f3-form-error" />', $view->render());
192  }
193 
198  {
199  // Create an extbase request that contains mapping results of the form object property we're working with.
200  $mappingResult = new ‪Result();
201  $objectResult = $mappingResult->forProperty('myObjectName');
202  $propertyResult = $objectResult->forProperty('someProperty');
203  $propertyResult->addError(new ‪Error('invalidProperty', 2));
204  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
205  $extbaseRequestParameters->setOriginalRequestMappingResults($mappingResult);
206  $psr7Request = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
207  $extbaseRequest = new ‪Request($psr7Request);
208  GeneralUtility::addInstance(Request::class, $extbaseRequest);
209 
210  $formObject = new \stdClass();
211  $view = new ‪StandaloneView();
212  $view->assign('formObject', $formObject);
213  $view->setTemplateSource('<f:form object="{formObject}" fieldNamePrefix="myFieldPrefix" objectName="myObjectName"><f:form.checkbox value="foo" property="someProperty" class="css_class" /></f:form>');
214  // The point is that 'class="myError"' is added since the form had mapping errors for this property.
215  self::assertStringContainsString('<input class="css_class f3-form-error" type="checkbox" name="myFieldPrefix[myObjectName][someProperty]" value="foo" />', $view->render());
216  }
217 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeArrayObject
‪renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeArrayObject()
Definition: CheckboxViewHelperTest.php:111
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeArray
‪renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeArray()
Definition: CheckboxViewHelperTest.php:98
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderSetsCheckedAttributeIfBoundPropertyIsNotNull
‪renderSetsCheckedAttributeIfBoundPropertyIsNotNull()
Definition: CheckboxViewHelperTest.php:123
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderCallSetsStandardErrorClassAttributeIfNonIsSpecified
‪renderCallSetsStandardErrorClassAttributeIfNonIsSpecified()
Definition: CheckboxViewHelperTest.php:173
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest
Definition: CheckboxViewHelperTest.php:30
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderCallExtendsClassAttributeWithErrorClass
‪renderCallExtendsClassAttributeWithErrorClass()
Definition: CheckboxViewHelperTest.php:197
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeBoolean
‪renderSetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeBoolean()
Definition: CheckboxViewHelperTest.php:72
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderIgnoresValueOfBoundPropertyIfCheckedIsSet
‪renderIgnoresValueOfBoundPropertyIfCheckedIsSet()
Definition: CheckboxViewHelperTest.php:59
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderCallSetsErrorClassAttribute
‪renderCallSetsErrorClassAttribute()
Definition: CheckboxViewHelperTest.php:149
‪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\CheckboxViewHelperTest\renderAppendsSquareBracketsToNameAttributeIfBoundToAPropertyOfTypeArray
‪renderAppendsSquareBracketsToNameAttributeIfBoundToAPropertyOfTypeArray()
Definition: CheckboxViewHelperTest.php:85
‪TYPO3\CMS\Extbase\Error\Error
Definition: Error.php:25
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\render
‪render(string $template, string $expected)
Definition: CheckboxViewHelperTest.php:49
‪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\CheckboxViewHelperTest\renderDataProvider
‪renderDataProvider()
Definition: CheckboxViewHelperTest.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
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CheckboxViewHelperTest\renderDoesNotSetsCheckedAttributeIfBoundPropertyIsNull
‪renderDoesNotSetsCheckedAttributeIfBoundPropertyIsNull()
Definition: CheckboxViewHelperTest.php:136