|
TYPO3 API
SVNRelease
|
00001 <?php 00002 00003 /* * 00004 * This script belongs to the FLOW3 package "Fluid". * 00005 * * 00006 * It is free software; you can redistribute it and/or modify it under * 00007 * the terms of the GNU General Public License as published by the Free * 00008 * Software Foundation, either version 3 of the License, or (at your * 00009 * option) any later version. * 00010 * * 00011 * This script is distributed in the hope that it will be useful, but * 00012 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- * 00013 * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * 00014 * Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License * 00017 * along with the script. * 00018 * If not, see http://www.gnu.org/licenses/gpl.html * 00019 * * 00020 * The TYPO3 project - inspiring people to share! * 00021 * */ 00022 00023 /** 00024 */ 00025 00026 require_once(dirname(__FILE__) . '/ViewHelperBaseTestcase.php'); 00027 00028 /** 00029 */ 00030 class Tx_Fluid_Tests_Unit_ViewHelpers_FormViewHelperTest extends Tx_Fluid_ViewHelpers_ViewHelperBaseTestcase { 00031 /** 00032 * @test 00033 * @author Sebastian Kurfürst <sebastian@typo3.org> 00034 */ 00035 public function renderAddsObjectToViewHelperVariableContainer() { 00036 $formObject = new stdClass(); 00037 00038 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderHiddenIdentityField', 'renderAdditionalIdentityFields', 'renderHiddenReferrerFields', 'renderRequestHashField', 'addFormObjectNameToViewHelperVariableContainer', 'addFieldNamePrefixToViewHelperVariableContainer', 'removeFormObjectNameFromViewHelperVariableContainer', 'removeFieldNamePrefixFromViewHelperVariableContainer', 'addFormFieldNamesToViewHelperVariableContainer', 'removeFormFieldNamesFromViewHelperVariableContainer'), array(), '', FALSE); 00039 $this->injectDependenciesIntoViewHelper($viewHelper); 00040 00041 $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('object' => $formObject))); 00042 $this->viewHelperVariableContainer->expects($this->at(0))->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'formObject', $formObject); 00043 $this->viewHelperVariableContainer->expects($this->at(1))->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'additionalIdentityProperties', array()); 00044 $this->viewHelperVariableContainer->expects($this->at(2))->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'formObject'); 00045 $this->viewHelperVariableContainer->expects($this->at(3))->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'additionalIdentityProperties'); 00046 $viewHelper->render(); 00047 } 00048 00049 /** 00050 * @test 00051 * @author Sebastian Kurfürst <sebastian@typo3.org> 00052 * @author Bastian Waidelich <bastian@typo3.org> 00053 */ 00054 public function renderAddsObjectNameToTemplateVariableContainer() { 00055 $objectName = 'someObjectName'; 00056 00057 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderHiddenIdentityField', 'renderHiddenReferrerFields', 'renderRequestHashField', 'addFormObjectToViewHelperVariableContainer', 'addFieldNamePrefixToViewHelperVariableContainer', 'removeFormObjectFromViewHelperVariableContainer', 'removeFieldNamePrefixFromViewHelperVariableContainer', 'addFormFieldNamesToViewHelperVariableContainer', 'removeFormFieldNamesFromViewHelperVariableContainer'), array(), '', FALSE); 00058 $this->injectDependenciesIntoViewHelper($viewHelper); 00059 00060 $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('name' => $objectName))); 00061 00062 $this->viewHelperVariableContainer->expects($this->once())->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'formObjectName', $objectName); 00063 $this->viewHelperVariableContainer->expects($this->once())->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'formObjectName'); 00064 $viewHelper->render(); 00065 } 00066 00067 /** 00068 * @test 00069 * @author Bastian Waidelich <bastian@typo3.org> 00070 */ 00071 public function formObjectNameArgumentOverrulesNameArgument() { 00072 $objectName = 'someObjectName'; 00073 00074 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderHiddenIdentityField', 'renderHiddenReferrerFields', 'renderRequestHashField', 'addFormObjectToViewHelperVariableContainer', 'addFieldNamePrefixToViewHelperVariableContainer', 'removeFormObjectFromViewHelperVariableContainer', 'removeFieldNamePrefixFromViewHelperVariableContainer', 'addFormFieldNamesToViewHelperVariableContainer', 'removeFormFieldNamesFromViewHelperVariableContainer'), array(), '', FALSE); 00075 $this->injectDependenciesIntoViewHelper($viewHelper); 00076 00077 $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('name' => 'formName', 'objectName' => $objectName))); 00078 00079 $this->viewHelperVariableContainer->expects($this->once())->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'formObjectName', $objectName); 00080 $this->viewHelperVariableContainer->expects($this->once())->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'formObjectName'); 00081 $viewHelper->render(); 00082 } 00083 00084 /** 00085 * @test 00086 * @author Christopher Hlubek <hlubek@networkteam.com> 00087 */ 00088 public function renderCallsRenderHiddenReferrerFields() { 00089 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderRequestHashField', 'renderHiddenReferrerFields'), array(), '', FALSE); 00090 $viewHelper->expects($this->once())->method('renderHiddenReferrerFields'); 00091 $this->injectDependenciesIntoViewHelper($viewHelper); 00092 00093 $viewHelper->render(); 00094 } 00095 00096 /** 00097 * @test 00098 * @author Sebastian Kurfürst <sebastian@typo3.org> 00099 * @author Bastian Waidelich <bastian@typo3.org> 00100 */ 00101 public function renderCallsRenderHiddenIdentityField() { 00102 $object = new stdClass(); 00103 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderRequestHashField', 'renderHiddenIdentityField', 'getFormObjectName'), array(), '', FALSE); 00104 $this->injectDependenciesIntoViewHelper($viewHelper); 00105 $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('object' => $object))); 00106 $viewHelper->expects($this->atLeastOnce())->method('getFormObjectName')->will($this->returnValue('MyName')); 00107 $viewHelper->expects($this->once())->method('renderHiddenIdentityField')->with($object, 'MyName'); 00108 00109 $viewHelper->render(); 00110 } 00111 00112 /** 00113 * @test 00114 * @author Sebastian Kurfürst <sebastian@typo3.org> 00115 */ 00116 public function renderCallsRenderAdditionalIdentityFields() { 00117 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderRequestHashField', 'renderAdditionalIdentityFields'), array(), '', FALSE); 00118 $viewHelper->expects($this->once())->method('renderAdditionalIdentityFields'); 00119 $this->injectDependenciesIntoViewHelper($viewHelper); 00120 00121 $viewHelper->render(); 00122 } 00123 00124 /** 00125 * @test 00126 * @author Bastian Waidelich <bastian@typo3.org> 00127 */ 00128 public function renderWrapsHiddenFieldsWithDivForXhtmlCompatibility() { 00129 $viewHelper = $this->getMock($this->buildAccessibleProxy('Tx_Fluid_ViewHelpers_FormViewHelper'), array('renderChildren', 'renderHiddenIdentityField', 'renderAdditionalIdentityFields', 'renderHiddenReferrerFields', 'renderRequestHashField'), array(), '', FALSE); 00130 $this->injectDependenciesIntoViewHelper($viewHelper); 00131 $viewHelper->expects($this->once())->method('renderHiddenIdentityField')->will($this->returnValue('hiddenIdentityField')); 00132 $viewHelper->expects($this->once())->method('renderAdditionalIdentityFields')->will($this->returnValue('additionalIdentityFields')); 00133 $viewHelper->expects($this->once())->method('renderHiddenReferrerFields')->will($this->returnValue('hiddenReferrerFields')); 00134 $viewHelper->expects($this->once())->method('renderRequestHashField')->will($this->returnValue('requestHashField')); 00135 $viewHelper->expects($this->once())->method('renderChildren')->will($this->returnValue('formContent')); 00136 00137 $expectedResult = chr(10) . '<div style="display: none">' . 'hiddenIdentityFieldadditionalIdentityFieldshiddenReferrerFieldsrequestHashField' . chr(10) . '</div>' . chr(10) . 'formContent'; 00138 $this->tagBuilder->expects($this->once())->method('setContent')->with($expectedResult); 00139 00140 $viewHelper->render(); 00141 } 00142 00143 00144 /** 00145 * @test 00146 * @author Sebastian Kurfürst <sebastian@typo3.org> 00147 */ 00148 public function renderAdditionalIdentityFieldsFetchesTheFieldsFromViewHelperVariableContainerAndBuildsHiddenFieldsForThem() { 00149 $identityProperties = array( 00150 'object1[object2]' => '<input type="hidden" name="object1[object2][__identity]" value="42" />', 00151 'object1[object2][subobject]' => '<input type="hidden" name="object1[object2][subobject][__identity]" value="21" />' 00152 ); 00153 $this->viewHelperVariableContainer->expects($this->once())->method('exists')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'additionalIdentityProperties')->will($this->returnValue(TRUE)); 00154 $this->viewHelperVariableContainer->expects($this->once())->method('get')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'additionalIdentityProperties')->will($this->returnValue($identityProperties)); 00155 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren'), array(), '', FALSE); 00156 $this->injectDependenciesIntoViewHelper($viewHelper); 00157 00158 $expected = chr(10) . '<input type="hidden" name="object1[object2][__identity]" value="42" />' . chr(10) . 00159 '<input type="hidden" name="object1[object2][subobject][__identity]" value="21" />'; 00160 $actual = $viewHelper->_call('renderAdditionalIdentityFields'); 00161 $this->assertEquals($expected, $actual); 00162 } 00163 00164 /** 00165 * @test 00166 * @author Christopher Hlubek <hlubek@networkteam.com> 00167 */ 00168 public function renderHiddenReferrerFieldsAddCurrentControllerAndActionAsHiddenFields() { 00169 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('dummy'), array(), '', FALSE); 00170 $this->injectDependenciesIntoViewHelper($viewHelper); 00171 00172 $this->request->expects($this->atLeastOnce())->method('getControllerExtensionName')->will($this->returnValue('extensionName')); 00173 $this->request->expects($this->never())->method('getControllerSubextensionName'); 00174 $this->request->expects($this->atLeastOnce())->method('getControllerName')->will($this->returnValue('controllerName')); 00175 $this->request->expects($this->atLeastOnce())->method('getControllerActionName')->will($this->returnValue('controllerActionName')); 00176 00177 $hiddenFields = $viewHelper->_call('renderHiddenReferrerFields'); 00178 $expectedResult = chr(10) . '<input type="hidden" name="__referrer[extensionName]" value="extensionName" />' . chr(10) . 00179 '<input type="hidden" name="__referrer[controllerName]" value="controllerName" />' . chr(10) . 00180 '<input type="hidden" name="__referrer[actionName]" value="controllerActionName" />' . chr(10); 00181 $this->assertEquals($expectedResult, $hiddenFields); 00182 } 00183 00184 /** 00185 * @test 00186 * @author Bastian Waidelich <bastian@typo3.org> 00187 */ 00188 public function renderAddsSpecifiedPrefixToTemplateVariableContainer() { 00189 $prefix = 'somePrefix'; 00190 00191 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderHiddenIdentityField', 'renderHiddenReferrerFields', 'renderRequestHashField', 'addFormFieldNamesToViewHelperVariableContainer', 'removeFormFieldNamesFromViewHelperVariableContainer'), array(), '', FALSE); 00192 $this->injectDependenciesIntoViewHelper($viewHelper); 00193 00194 $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('fieldNamePrefix' => $prefix))); 00195 00196 $this->viewHelperVariableContainer->expects($this->once())->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'fieldNamePrefix', $prefix); 00197 $this->viewHelperVariableContainer->expects($this->once())->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'fieldNamePrefix'); 00198 $viewHelper->render(); 00199 } 00200 00201 /** 00202 * @test 00203 * @author Bastian Waidelich <bastian@typo3.org> 00204 */ 00205 public function renderAddsDefaultFieldNamePrefixToTemplateVariableContainerIfNoPrefixIsSpecified() { 00206 $expectedPrefix = 'tx_someextension_someplugin'; 00207 00208 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderHiddenIdentityField', 'renderHiddenReferrerFields', 'renderRequestHashField', 'addFormFieldNamesToViewHelperVariableContainer', 'removeFormFieldNamesFromViewHelperVariableContainer'), array(), '', FALSE); 00209 $this->injectDependenciesIntoViewHelper($viewHelper); 00210 00211 $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('extensionName' => 'SomeExtension', 'pluginName' => 'SomePlugin'))); 00212 00213 $this->viewHelperVariableContainer->expects($this->once())->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'fieldNamePrefix', $expectedPrefix); 00214 $this->viewHelperVariableContainer->expects($this->once())->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'fieldNamePrefix'); 00215 $viewHelper->render(); 00216 } 00217 00218 /** 00219 * Data Provider for postProcessUriArgumentsForRequestHashWorks 00220 */ 00221 public function argumentsForPostProcessUriArgumentsForRequestHash() { 00222 return array( 00223 // simple values 00224 array( 00225 array( 00226 'bla' => 'X', 00227 'blubb' => 'Y' 00228 ), 00229 array( 00230 'bla', 00231 'blubb' 00232 ) 00233 ), 00234 // Arrays 00235 array( 00236 array( 00237 'bla' => array( 00238 'test1' => 'X', 00239 'test2' => 'Y' 00240 ), 00241 'blubb' => 'Y' 00242 ), 00243 array( 00244 'bla[test1]', 00245 'bla[test2]', 00246 'blubb' 00247 ) 00248 ) 00249 ); 00250 } 00251 /** 00252 * @test 00253 * @author Sebastian Kurfürst <sebastian@typo3.org> 00254 * @dataProvider argumentsForPostProcessUriArgumentsForRequestHash 00255 */ 00256 public function postProcessUriArgumentsForRequestHashWorks($arguments, $expectedResults) { 00257 $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('dummy'), array(), '', FALSE); 00258 $results = array(); 00259 $viewHelper->_callRef('postProcessUriArgumentsForRequestHash', $arguments, $results); 00260 $this->assertEquals($expectedResults, $results); 00261 } 00262 } 00263 ?>
1.8.0