|
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 Lesser General Public License as published by the * 00008 * Free 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 Lesser * 00014 * General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU Lesser General Public * 00017 * License along with the script. * 00018 * If not, see http://www.gnu.org/licenses/lgpl.html * 00019 * * 00020 * The TYPO3 project - inspiring people to share! * 00021 * */ 00022 00023 require_once(dirname(__FILE__) . '/../ViewHelperBaseTestcase.php'); 00024 00025 /** 00026 * Test for the "Checkbox" Form view helper 00027 * 00028 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later 00029 */ 00030 class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Fluid_ViewHelpers_ViewHelperBaseTestcase { 00031 00032 /** 00033 * var Tx_Fluid_ViewHelpers_Form_CheckboxViewHelper 00034 */ 00035 protected $viewHelper; 00036 00037 public function setUp() { 00038 parent::setUp(); 00039 $this->viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_Form_CheckboxViewHelper', array('setErrorClassAttribute', 'getName', 'getValue', 'isObjectAccessorMode', 'getPropertyValue', 'registerFieldNameForFormTokenGeneration')); 00040 $this->injectDependenciesIntoViewHelper($this->viewHelper); 00041 $this->viewHelper->initializeArguments(); 00042 } 00043 00044 /** 00045 * @test 00046 * @author Bastian Waidelich <bastian@typo3.org> 00047 */ 00048 public function renderCorrectlySetsTagNameAndDefaultAttributes() { 00049 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00050 $mockTagBuilder->expects($this->once())->method('setTagName')->with('input'); 00051 $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'checkbox'); 00052 $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('name', 'foo'); 00053 $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('foo'); 00054 $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('value', 'bar'); 00055 00056 $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo')); 00057 $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar')); 00058 $this->viewHelper->_set('tag', $mockTagBuilder); 00059 00060 $this->viewHelper->initialize(); 00061 $this->viewHelper->render(); 00062 } 00063 00064 /** 00065 * @test 00066 * @author Bastian Waidelich <bastian@typo3.org> 00067 */ 00068 public function renderSetsCheckedAttributeIfSpecified() { 00069 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00070 $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'checkbox'); 00071 $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('name', 'foo'); 00072 $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('value', 'bar'); 00073 $mockTagBuilder->expects($this->at(4))->method('addAttribute')->with('checked', 'checked'); 00074 00075 $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo')); 00076 $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar')); 00077 $this->viewHelper->_set('tag', $mockTagBuilder); 00078 00079 $this->viewHelper->initialize(); 00080 $this->viewHelper->render(TRUE); 00081 } 00082 00083 /** 00084 * @test 00085 * @author Bastian Waidelich <bastian@typo3.org> 00086 */ 00087 public function renderIgnoresBoundPropertyIfCheckedIsSet() { 00088 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00089 $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'checkbox'); 00090 $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('name', 'foo'); 00091 $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('value', 'bar'); 00092 00093 $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo')); 00094 $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar')); 00095 $this->viewHelper->expects($this->never())->method('isObjectAccessorMode')->will($this->returnValue(TRUE)); 00096 $this->viewHelper->expects($this->never())->method('getPropertyValue')->will($this->returnValue(TRUE)); 00097 $this->viewHelper->_set('tag', $mockTagBuilder); 00098 00099 $this->viewHelper->initialize(); 00100 $this->viewHelper->render(TRUE); 00101 $this->viewHelper->render(FALSE); 00102 } 00103 00104 /** 00105 * @test 00106 * @author Bastian Waidelich <bastian@typo3.org> 00107 */ 00108 public function renderCorrectlySetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeBoolean() { 00109 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00110 $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'checkbox'); 00111 $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('name', 'foo'); 00112 $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('value', 'bar'); 00113 $mockTagBuilder->expects($this->at(4))->method('addAttribute')->with('checked', 'checked'); 00114 00115 $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo')); 00116 $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar')); 00117 $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE)); 00118 $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(TRUE)); 00119 $this->viewHelper->_set('tag', $mockTagBuilder); 00120 00121 $this->viewHelper->initialize(); 00122 $this->viewHelper->render(); 00123 } 00124 00125 /** 00126 * @test 00127 * @author Bastian Waidelich <bastian@typo3.org> 00128 */ 00129 public function renderAppendsSquareBracketsToNameAttributeIfBoundToAPropertyOfTypeArray() { 00130 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00131 $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'checkbox'); 00132 $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('name', 'foo[]'); 00133 $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('foo[]'); 00134 $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('value', 'bar'); 00135 00136 $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo')); 00137 $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar')); 00138 $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE)); 00139 $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(array())); 00140 $this->viewHelper->_set('tag', $mockTagBuilder); 00141 00142 $this->viewHelper->initialize(); 00143 $this->viewHelper->render(); 00144 } 00145 00146 /** 00147 * @test 00148 * @author Bastian Waidelich <bastian@typo3.org> 00149 */ 00150 public function renderCorrectlySetsCheckedAttributeIfCheckboxIsBoundToAPropertyOfTypeArray() { 00151 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00152 $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'checkbox'); 00153 $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('name', 'foo[]'); 00154 $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('value', 'bar'); 00155 $mockTagBuilder->expects($this->at(4))->method('addAttribute')->with('checked', 'checked'); 00156 00157 $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo')); 00158 $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar')); 00159 $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE)); 00160 $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(array('foo', 'bar', 'baz'))); 00161 $this->viewHelper->_set('tag', $mockTagBuilder); 00162 00163 $this->viewHelper->initialize(); 00164 $this->viewHelper->render(); 00165 } 00166 00167 /** 00168 * @test 00169 * @expectedException Tx_Fluid_Core_ViewHelper_Exception 00170 * @author Bastian Waidelich <bastian@typo3.org> 00171 */ 00172 public function bindingObjectsToACheckboxThatAreNotOfTypeBooleanOrArrayThrowsException() { 00173 $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute')); 00174 00175 $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE)); 00176 $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(new stdClass())); 00177 $this->viewHelper->_set('tag', $mockTagBuilder); 00178 00179 $this->viewHelper->initialize(); 00180 $this->viewHelper->render(); 00181 } 00182 00183 /** 00184 * @test 00185 * @author Bastian Waidelich <bastian@typo3.org> 00186 */ 00187 public function renderCallsSetErrorClassAttribute() { 00188 $this->viewHelper->expects($this->once())->method('setErrorClassAttribute'); 00189 $this->viewHelper->render(); 00190 } 00191 } 00192 00193 ?>
1.8.0