PageRenderTime 43ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/testapp/modules/jelix_tests/tests/jforms.htmlbuilder.html_cli.php

https://bitbucket.org/jelix/jelix-1.0.x
PHP | 651 lines | 520 code | 122 blank | 9 comment | 6 complexity | a4193a563be2f31b8edda85a7f2b6804 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1. <?php
  2. /**
  3. * @package testapp
  4. * @subpackage unittest module
  5. * @author Jouanneau Laurent
  6. * @contributor
  7. * @copyright 2007 Jouanneau laurent
  8. * @link http://www.jelix.org
  9. * @licence GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  10. */
  11. require_once(JELIX_LIB_FORMS_PATH.'jFormsBuilderBase.class.php');
  12. require_once(JELIX_LIB_FORMS_PATH.'jFormsControl.class.php');
  13. require_once(JELIX_LIB_UTILS_PATH.'jDatatype.class.php');
  14. require_once(JELIX_LIB_FORMS_PATH.'jFormsDatasource.class.php');
  15. require_once(JELIX_LIB_FORMS_PATH.'jFormsDataContainer.class.php');
  16. class testHMLForm { // simulate a jFormBase object
  17. public $controls= array();
  18. public $submits= array();
  19. public $uploads= array();
  20. public $reset= null;
  21. public $container;
  22. protected $datas = array( 'chk'=>'1', 'chk2'=>'', 'choixsimple'=>'11', 'choixmultiple'=>array('10','23'));
  23. function __construct(){
  24. $this->container = new jFormsDataContainer('','');
  25. }
  26. function getData($name) {
  27. if(isset($this->datas[$name]))
  28. return $this->datas[$name];
  29. else
  30. return null;
  31. }
  32. function setData($name,$value) {
  33. $this->datas[$name]=$value;
  34. }
  35. function getControls() {
  36. return $this->controls;
  37. }
  38. function getContainer() {
  39. return $this->container;
  40. }
  41. function hasUpload(){
  42. return false;
  43. }
  44. function addControl($control){
  45. $this->controls [$control->ref] = $control;
  46. if($control->type =='submit')
  47. $this->submits [$control->ref] = $control;
  48. else if($control->type =='upload')
  49. $this->uploads [$control->ref] = $control;
  50. else if($control->type =='reset')
  51. $this->reset = $control;
  52. $this->datas[$control->ref] = $control->defaultValue;
  53. }
  54. }
  55. class testJFormsHtmlBuilder extends jFormsHtmlBuilderBase {
  56. public function getJavascriptCheck($errDecorator,$helpDecorator){
  57. return '';
  58. }
  59. }
  60. class UTjformsHTMLBuilder extends jUnitTestCaseDb {
  61. protected $form;
  62. protected $builder;
  63. function testStart() {
  64. $this->form = new testHMLForm();
  65. $this->builder = new testJFormsHtmlBuilder($this->form, 'jelix_tests~urlsig:url1',array());
  66. $this->formname = $this->builder->getName();
  67. }
  68. function testOutputHeader(){
  69. $builder = new testJFormsHtmlBuilder(new testHMLForm(), 'jelix_tests~urlsig:url1',array());
  70. $formname = $builder->getName();
  71. ob_start();
  72. $builder->outputHeader(array('','','post'));
  73. $out = ob_get_clean();
  74. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="post" id="'.$formname.'" onsubmit="return jForms.verifyForm(this)"><div><input type="hidden" name="module" value="jelix_tests"/>
  75. <input type="hidden" name="action" value="urlsig:url1"/>
  76. </div><script type="text/javascript">
  77. //<![CDATA[
  78. //]]>
  79. </script>';
  80. $this->assertEqualOrDiff($result, $out);
  81. $builder = new testJFormsHtmlBuilder(new testHMLForm(), 'jelix_tests~urlsig:url1',array('foo'=>'b>ar'));
  82. $formname = $builder->getName();
  83. ob_start();
  84. $builder->outputHeader(array('','','get'));
  85. $out = ob_get_clean();
  86. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="get" id="'.$formname.'" onsubmit="return jForms.verifyForm(this)"><div><input type="hidden" name="foo" value="b&gt;ar"/>
  87. <input type="hidden" name="module" value="jelix_tests"/>
  88. <input type="hidden" name="action" value="urlsig:url1"/>
  89. </div><script type="text/javascript">
  90. //<![CDATA[
  91. //]]>
  92. </script>';
  93. $this->assertEqualOrDiff($result, $out);
  94. }
  95. function testOutputFooter(){
  96. ob_start();
  97. $this->builder->outputFooter();
  98. $out = ob_get_clean();
  99. $this->assertEqualOrDiff('</form>', $out);
  100. }
  101. function testOutputInput(){
  102. $ctrl= new jFormsControlinput('nom');
  103. $ctrl->datatype= new jDatatypeString();
  104. $ctrl->label='Votre nom';
  105. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  106. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom">Votre nom</label>', $out);
  107. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  108. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" value=""/>', $out);
  109. $this->form->addControl($ctrl);
  110. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  111. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" value=""/>', $out);
  112. $this->form->setData('nom','toto');
  113. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  114. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" value="toto"/>', $out);
  115. $ctrl->defaultValue='laurent';
  116. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  117. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" value="toto"/>', $out);
  118. $this->form->addControl($ctrl);
  119. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  120. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" value="laurent"/>', $out);
  121. $ctrl->readonly=true;
  122. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  123. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" readonly="readonly" value="laurent"/>', $out);
  124. $ctrl->readonly=false;
  125. $ctrl->hasHelp=true;
  126. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  127. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" value="laurent"/><span class="jforms-help"><a href="javascript:jForms.showHelp(\''. $this->formname.'\',\'nom\')">?</a></span>', $out);
  128. $ctrl->hint='ceci est un tooltip';
  129. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  130. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom" title="ceci est un tooltip">Votre nom</label>', $out);
  131. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  132. $this->assertEqualOrDiff('<input type="text" name="nom" id="'.$this->formname.'_nom" title="ceci est un tooltip" value="laurent"/><span class="jforms-help"><a href="javascript:jForms.showHelp(\''. $this->formname.'\',\'nom\')">?</a></span>', $out);
  133. }
  134. function testOutputCheckbox(){
  135. $ctrl= new jFormsControlCheckbox('chk');
  136. $ctrl->datatype= new jDatatypeString();
  137. $ctrl->label='Une option';
  138. $this->form->addControl($ctrl);
  139. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  140. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_chk">Une option</label>', $out);
  141. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  142. $this->assertEqualOrDiff('<input type="checkbox" name="chk" id="'.$this->formname.'_chk" value="1"/>', $out);
  143. $this->form->setData('chk','1');
  144. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  145. $this->assertEqualOrDiff('<input type="checkbox" name="chk" id="'.$this->formname.'_chk" checked="checked" value="1"/>', $out);
  146. $ctrl= new jFormsControlCheckbox('chk2');
  147. $ctrl->datatype= new jDatatypeString();
  148. $ctrl->label='Une option';
  149. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  150. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_chk2">Une option</label>', $out);
  151. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  152. $this->assertEqualOrDiff('<input type="checkbox" name="chk2" id="'.$this->formname.'_chk2" value="1"/>', $out);
  153. $ctrl->defaultValue='1';
  154. $this->form->addControl($ctrl);
  155. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  156. $this->assertEqualOrDiff('<input type="checkbox" name="chk2" id="'.$this->formname.'_chk2" checked="checked" value="1"/>', $out);
  157. $this->form->setData('chk2', '0');
  158. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  159. $this->assertEqualOrDiff('<input type="checkbox" name="chk2" id="'.$this->formname.'_chk2" value="1"/>', $out);
  160. $ctrl->readonly=true;
  161. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  162. $this->assertEqualOrDiff('<input type="checkbox" name="chk2" id="'.$this->formname.'_chk2" readonly="readonly" value="1"/>', $out);
  163. $this->form->setData('chk2', '1');
  164. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  165. $this->assertEqualOrDiff('<input type="checkbox" name="chk2" id="'.$this->formname.'_chk2" readonly="readonly" checked="checked" value="1"/>', $out);
  166. $ctrl->hint='ceci est un tooltip';
  167. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  168. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_chk2" title="ceci est un tooltip">Une option</label>', $out);
  169. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  170. $this->assertEqualOrDiff('<input type="checkbox" name="chk2" id="'.$this->formname.'_chk2" readonly="readonly" title="ceci est un tooltip" checked="checked" value="1"/>', $out);
  171. }
  172. function testOutputCheckboxes(){
  173. $ctrl= new jFormsControlcheckboxes('choixsimple');
  174. $ctrl->datatype= new jDatatypeString();
  175. $ctrl->label='Vos choix';
  176. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  177. $records = array(
  178. array('id'=>'10', 'name'=>'foo', 'price'=>'12'),
  179. array('id'=>'11', 'name'=>'bar', 'price'=>'54'),
  180. array('id'=>'23', 'name'=>'baz', 'price'=>'97'),
  181. );
  182. $this->insertRecordsIntoTable('product_test', array('id','name','price'), $records, true);
  183. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  184. $this->assertEqualOrDiff('<span class="jforms-label">Vos choix</span>', $out);
  185. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  186. $result='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_0" value="10"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>';
  187. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_1" value="11" checked="checked"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>';
  188. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_2" value="23"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>';
  189. $this->assertEqualOrDiff($result, $out);
  190. $ctrl= new jFormsControlcheckboxes('choixmultiple');
  191. $ctrl->datatype= new jDatatypeString();
  192. $ctrl->label='Vos choix';
  193. $ctrl->datasource= new jFormStaticDatasource();
  194. $ctrl->datasource->datas = array(
  195. '10'=>'foo',
  196. '11'=>'bar',
  197. '23'=>'baz',
  198. );
  199. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  200. $this->assertEqualOrDiff('<span class="jforms-label">Vos choix</span>', $out);
  201. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  202. $result='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_0" value="10" checked="checked"/><label for="'.$this->formname.'_choixmultiple_0">foo</label></span>';
  203. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_1" value="11"/><label for="'.$this->formname.'_choixmultiple_1">bar</label></span>';
  204. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_2" value="23" checked="checked"/><label for="'.$this->formname.'_choixmultiple_2">baz</label></span>';
  205. $this->assertEqualOrDiff($result, $out);
  206. $ctrl->readonly = true;
  207. $ctrl->hint='ceci est un tooltip';
  208. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  209. $this->assertEqualOrDiff('<span class="jforms-label" title="ceci est un tooltip">Vos choix</span>', $out);
  210. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  211. $result='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_0" value="10" checked="checked" readonly="readonly"/><label for="'.$this->formname.'_choixmultiple_0">foo</label></span>';
  212. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_1" value="11" readonly="readonly"/><label for="'.$this->formname.'_choixmultiple_1">bar</label></span>';
  213. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_2" value="23" checked="checked" readonly="readonly"/><label for="'.$this->formname.'_choixmultiple_2">baz</label></span>';
  214. $this->assertEqualOrDiff($result, $out);
  215. }
  216. function testOutputRadiobuttons(){
  217. $ctrl= new jFormsControlradiobuttons('choixsimple');
  218. $ctrl->datatype= new jDatatypeString();
  219. $ctrl->label='Votre choix';
  220. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  221. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  222. $this->assertEqualOrDiff('<span class="jforms-label">Votre choix</span>', $out);
  223. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  224. $result='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_0" value="10"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>';
  225. $result.='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_1" value="11" checked="checked"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>';
  226. $result.='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_2" value="23"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>';
  227. $this->assertEqualOrDiff($result, $out);
  228. $ctrl->datasource= new jFormStaticDatasource();
  229. $ctrl->datasource->datas = array(
  230. '10'=>'foo',
  231. '11'=>'bar',
  232. '23'=>'baz',
  233. );
  234. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  235. $result='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_0" value="10"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>';
  236. $result.='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_1" value="11" checked="checked"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>';
  237. $result.='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_2" value="23"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>';
  238. $this->assertEqualOrDiff($result, $out);
  239. $ctrl->readonly = true;
  240. $ctrl->hint='ceci est un tooltip';
  241. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  242. $this->assertEqualOrDiff('<span class="jforms-label" title="ceci est un tooltip">Votre choix</span>', $out);
  243. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  244. $result='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_0" value="10" readonly="readonly"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>';
  245. $result.='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_1" value="11" checked="checked" readonly="readonly"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>';
  246. $result.='<span class="jforms-radio jforms-ctl-choixsimple"><input type="radio" name="choixsimple" id="'.$this->formname.'_choixsimple_2" value="23" readonly="readonly"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>';
  247. $this->assertEqualOrDiff($result, $out);
  248. }
  249. function testOutputMenulist(){
  250. $ctrl= new jFormsControlmenulist('choixsimple');
  251. $ctrl->datatype= new jDatatypeString();
  252. $ctrl->label='Votre choix';
  253. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  254. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  255. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixsimple">Votre choix</label>', $out);
  256. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  257. $result='<select name="choixsimple" id="'.$this->formname.'_choixsimple" size="1">';
  258. $result.='<option value=""></option>';
  259. $result.='<option value="10">foo</option>';
  260. $result.='<option value="11" selected="selected">bar</option>';
  261. $result.='<option value="23">baz</option>';
  262. $result.='</select>';
  263. $this->assertEqualOrDiff($result, $out);
  264. $ctrl->datasource= new jFormStaticDatasource();
  265. $ctrl->datasource->datas = array(
  266. '10'=>'foo',
  267. '11'=>'bar',
  268. '23'=>'baz',
  269. );
  270. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  271. $this->assertEqualOrDiff($result, $out);
  272. $ctrl->readonly = true;
  273. $ctrl->hint='ceci est un tooltip';
  274. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  275. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixsimple" title="ceci est un tooltip">Votre choix</label>', $out);
  276. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  277. $result='<select name="choixsimple" id="'.$this->formname.'_choixsimple" title="ceci est un tooltip" size="1">';
  278. $result.='<option value=""></option>';
  279. $result.='<option value="10">foo</option>';
  280. $result.='<option value="11" selected="selected">bar</option>';
  281. $result.='<option value="23">baz</option>';
  282. $result.='</select>';
  283. $this->assertEqualOrDiff($result, $out);
  284. $ctrl->required = true;
  285. $this->form->setData('choixsimple',"23");
  286. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  287. $result='<select name="choixsimple" id="'.$this->formname.'_choixsimple" title="ceci est un tooltip" size="1">';
  288. $result.='<option value="10">foo</option>';
  289. $result.='<option value="11">bar</option>';
  290. $result.='<option value="23" selected="selected">baz</option>';
  291. $result.='</select>';
  292. $this->assertEqualOrDiff($result, $out);
  293. $ctrl->required = false;
  294. $this->form->setData('choixsimple',"");
  295. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  296. $result='<select name="choixsimple" id="'.$this->formname.'_choixsimple" title="ceci est un tooltip" size="1">';
  297. $result.='<option value="" selected="selected"></option>';
  298. $result.='<option value="10">foo</option>';
  299. $result.='<option value="11">bar</option>';
  300. $result.='<option value="23">baz</option>';
  301. $result.='</select>';
  302. $this->assertEqualOrDiff($result, $out);
  303. $this->form->setData('choixsimple',"23");
  304. }
  305. function testOutputListbox(){
  306. $ctrl= new jFormsControllistbox('choixsimple');
  307. $ctrl->datatype= new jDatatypeString();
  308. $ctrl->label='Votre choix';
  309. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  310. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  311. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixsimple">Votre choix</label>', $out);
  312. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  313. $result='<select name="choixsimple" id="'.$this->formname.'_choixsimple" size="4">';
  314. $result.='<option value="10">foo</option>';
  315. $result.='<option value="11">bar</option>';
  316. $result.='<option value="23" selected="selected">baz</option>';
  317. $result.='</select>';
  318. $this->assertEqualOrDiff($result, $out);
  319. $ctrl->datasource= new jFormStaticDatasource();
  320. $ctrl->datasource->datas = array(
  321. '10'=>'foo',
  322. '11'=>'bar',
  323. '23'=>'baz',
  324. );
  325. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  326. $this->assertEqualOrDiff($result, $out);
  327. $ctrl->readonly = true;
  328. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  329. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixsimple">Votre choix</label>', $out);
  330. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  331. $result='<select name="choixsimple" id="'.$this->formname.'_choixsimple" size="4">';
  332. $result.='<option value="10">foo</option>';
  333. $result.='<option value="11">bar</option>';
  334. $result.='<option value="23" selected="selected">baz</option>';
  335. $result.='</select>';
  336. $this->assertEqualOrDiff($result, $out);
  337. $ctrl= new jFormsControllistbox('choixmultiple');
  338. $ctrl->datatype= new jDatatypeString();
  339. $ctrl->label='Votre choix';
  340. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  341. $ctrl->multiple=true;
  342. $ctrl->hint='ceci est un tooltip';
  343. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  344. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixmultiple" title="ceci est un tooltip">Votre choix</label>', $out);
  345. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  346. $result='<select name="choixmultiple[]" id="'.$this->formname.'_choixmultiple" title="ceci est un tooltip" size="4" multiple="multiple">';
  347. $result.='<option value="10" selected="selected">foo</option>';
  348. $result.='<option value="11">bar</option>';
  349. $result.='<option value="23" selected="selected">baz</option>';
  350. $result.='</select>';
  351. $this->assertEqualOrDiff($result, $out);
  352. $ctrl= new jFormsControllistbox('choixsimpleinconnu');
  353. $ctrl->datatype= new jDatatypeString();
  354. $ctrl->label='Votre choix';
  355. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  356. $ctrl->defaultValue=array ('10');
  357. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  358. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixsimpleinconnu">Votre choix</label>', $out);
  359. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  360. $result='<select name="choixsimpleinconnu" id="'.$this->formname.'_choixsimpleinconnu" size="4">';
  361. $result.='<option value="10">foo</option>';
  362. $result.='<option value="11">bar</option>';
  363. $result.='<option value="23">baz</option>';
  364. $result.='</select>';
  365. $this->assertEqualOrDiff($result, $out);
  366. $this->form->addControl($ctrl);
  367. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  368. $result='<select name="choixsimpleinconnu" id="'.$this->formname.'_choixsimpleinconnu" size="4">';
  369. $result.='<option value="10" selected="selected">foo</option>';
  370. $result.='<option value="11">bar</option>';
  371. $result.='<option value="23">baz</option>';
  372. $result.='</select>';
  373. $this->assertEqualOrDiff($result, $out);
  374. $ctrl= new jFormsControllistbox('choixmultipleinconnu');
  375. $ctrl->datatype= new jDatatypeString();
  376. $ctrl->label='Votre choix';
  377. $ctrl->datasource = new jFormDaoDatasource('jelix_tests~products','findAll','name','id');
  378. $ctrl->multiple=true;
  379. $ctrl->size=8;
  380. $ctrl->defaultValue=array ('11','23');
  381. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  382. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_choixmultipleinconnu">Votre choix</label>', $out);
  383. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  384. $result='<select name="choixmultipleinconnu[]" id="'.$this->formname.'_choixmultipleinconnu" size="8" multiple="multiple">';
  385. $result.='<option value="10">foo</option>';
  386. $result.='<option value="11">bar</option>';
  387. $result.='<option value="23">baz</option>';
  388. $result.='</select>';
  389. $this->assertEqualOrDiff($result, $out);
  390. $this->form->addControl($ctrl);
  391. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  392. $result='<select name="choixmultipleinconnu[]" id="'.$this->formname.'_choixmultipleinconnu" size="8" multiple="multiple">';
  393. $result.='<option value="10">foo</option>';
  394. $result.='<option value="11" selected="selected">bar</option>';
  395. $result.='<option value="23" selected="selected">baz</option>';
  396. $result.='</select>';
  397. $this->assertEqualOrDiff($result, $out);
  398. }
  399. function testOutputTextarea(){
  400. $ctrl= new jFormsControltextarea('nom');
  401. $ctrl->datatype= new jDatatypeString();
  402. $ctrl->label='Votre nom';
  403. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  404. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom">Votre nom</label>', $out);
  405. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  406. $this->assertEqualOrDiff('<textarea name="nom" id="'.$this->formname.'_nom" rows="5" cols="40">laurent</textarea>', $out);
  407. $ctrl->readonly=true;
  408. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  409. $this->assertEqualOrDiff('<textarea name="nom" id="'.$this->formname.'_nom" readonly="readonly" rows="5" cols="40">laurent</textarea>', $out);
  410. $ctrl->hint='ceci est un tooltip';
  411. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  412. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom" title="ceci est un tooltip">Votre nom</label>', $out);
  413. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  414. $this->assertEqualOrDiff('<textarea name="nom" id="'.$this->formname.'_nom" readonly="readonly" title="ceci est un tooltip" rows="5" cols="40">laurent</textarea>', $out);
  415. $ctrl->rows=20;
  416. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  417. $this->assertEqualOrDiff('<textarea name="nom" id="'.$this->formname.'_nom" readonly="readonly" title="ceci est un tooltip" rows="20" cols="40">laurent</textarea>', $out);
  418. $ctrl->cols=60;
  419. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  420. $this->assertEqualOrDiff('<textarea name="nom" id="'.$this->formname.'_nom" readonly="readonly" title="ceci est un tooltip" rows="20" cols="60">laurent</textarea>', $out);
  421. }
  422. function testOutputSecret(){
  423. $ctrl= new jFormsControlSecret('nom');
  424. $ctrl->datatype= new jDatatypeString();
  425. $ctrl->label='Votre nom';
  426. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  427. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom">Votre nom</label>', $out);
  428. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  429. $this->assertEqualOrDiff('<input type="password" name="nom" id="'.$this->formname.'_nom" value="laurent"/>', $out);
  430. $ctrl->readonly = true;
  431. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  432. $this->assertEqualOrDiff('<input type="password" name="nom" id="'.$this->formname.'_nom" readonly="readonly" value="laurent"/>', $out);
  433. $ctrl->hint='ceci est un tooltip';
  434. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  435. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom" title="ceci est un tooltip">Votre nom</label>', $out);
  436. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  437. $this->assertEqualOrDiff('<input type="password" name="nom" id="'.$this->formname.'_nom" readonly="readonly" title="ceci est un tooltip" value="laurent"/>', $out);
  438. }
  439. function testOutputSecretConfirm(){
  440. $ctrl= new jFormsControlSecretConfirm('nom_confirm');
  441. $ctrl->label='Votre nom';
  442. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  443. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom_confirm">Votre nom</label>', $out);
  444. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  445. $this->assertEqualOrDiff('<input type="password" name="nom_confirm" id="'.$this->formname.'_nom_confirm" value=""/>', $out);
  446. $ctrl->readonly = true;
  447. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  448. $this->assertEqualOrDiff('<input type="password" name="nom_confirm" id="'.$this->formname.'_nom_confirm" readonly="readonly" value=""/>', $out);
  449. $ctrl->hint='ceci est un tooltip';
  450. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  451. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom_confirm" title="ceci est un tooltip">Votre nom</label>', $out);
  452. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  453. $this->assertEqualOrDiff('<input type="password" name="nom_confirm" id="'.$this->formname.'_nom_confirm" readonly="readonly" title="ceci est un tooltip" value=""/>', $out);
  454. }
  455. function testOutputOutput(){
  456. $ctrl= new jFormsControlOutput('nom');
  457. $ctrl->datatype= new jDatatypeString();
  458. $ctrl->label='Votre nom';
  459. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  460. $this->assertEqualOrDiff('<span class="jforms-label">Votre nom</span>', $out);
  461. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  462. $this->assertEqualOrDiff('<input type="hidden" name="nom" id="'.$this->formname.'_nom" value="laurent"/><span class="jforms-value">laurent</span>', $out);
  463. $ctrl->readonly=true;
  464. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  465. $this->assertEqualOrDiff('<input type="hidden" name="nom" id="'.$this->formname.'_nom" value="laurent"/><span class="jforms-value">laurent</span>', $out);
  466. $ctrl->hint='ceci est un tooltip';
  467. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  468. $this->assertEqualOrDiff('<span class="jforms-label" title="ceci est un tooltip">Votre nom</span>', $out);
  469. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  470. $this->assertEqualOrDiff('<input type="hidden" name="nom" id="'.$this->formname.'_nom" value="laurent"/><span class="jforms-value" title="ceci est un tooltip">laurent</span>', $out);
  471. }
  472. function testOutputUpload(){
  473. $ctrl= new jFormsControlUpload('nom');
  474. $ctrl->datatype= new jDatatypeString();
  475. $ctrl->label='Votre nom';
  476. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  477. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom">Votre nom</label>', $out);
  478. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  479. $this->assertEqualOrDiff('<input type="file" name="nom" id="'.$this->formname.'_nom" value=""/>', $out);
  480. $ctrl->readonly = true;
  481. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  482. $this->assertEqualOrDiff('<input type="file" name="nom" id="'.$this->formname.'_nom" readonly="readonly" value=""/>', $out);
  483. $ctrl->hint='ceci est un tooltip';
  484. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  485. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_nom" title="ceci est un tooltip">Votre nom</label>', $out);
  486. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  487. $this->assertEqualOrDiff('<input type="file" name="nom" id="'.$this->formname.'_nom" readonly="readonly" title="ceci est un tooltip" value=""/>', $out);
  488. }
  489. function testOutputSubmit(){
  490. $ctrl= new jFormsControlSubmit('nom');
  491. $ctrl->datatype= new jDatatypeString();
  492. $ctrl->label='Votre nom';
  493. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  494. $this->assertEqualOrDiff('', $out);
  495. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  496. $this->assertEqualOrDiff('<input type="submit" name="nom" id="'.$this->formname.'_nom" class="jforms-submit" value="Votre nom"/>', $out);
  497. $ctrl->readonly = true;
  498. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  499. $this->assertEqualOrDiff('<input type="submit" name="nom" id="'.$this->formname.'_nom" class="jforms-submit" value="Votre nom"/>', $out);
  500. $ctrl->hint='ceci est un tooltip';
  501. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  502. $this->assertEqualOrDiff('<input type="submit" name="nom" id="'.$this->formname.'_nom" title="ceci est un tooltip" class="jforms-submit" value="Votre nom"/>', $out);
  503. $ctrl->standalone=false;
  504. $ctrl->datasource= new jFormStaticDatasource();
  505. $ctrl->datasource->datas = array('svg'=>'Sauvegarde','prev'=>'Preview');
  506. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  507. $output = '<input type="submit" name="nom" id="'.$this->formname.'_nom_svg" title="ceci est un tooltip" class="jforms-submit" value="Sauvegarde"/> ';
  508. $output .= '<input type="submit" name="nom" id="'.$this->formname.'_nom_prev" title="ceci est un tooltip" class="jforms-submit" value="Preview"/> ';
  509. $this->assertEqualOrDiff($output, $out);
  510. }
  511. function testOutputReset(){
  512. $ctrl= new jFormsControlReset('nom');
  513. $ctrl->datatype= new jDatatypeString();
  514. $ctrl->label='Votre nom';
  515. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  516. $this->assertEqualOrDiff('', $out);
  517. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  518. $this->assertEqualOrDiff('<button type="reset" name="nom" id="'.$this->formname.'_nom" class="jforms-reset">Votre nom</button>', $out);
  519. $ctrl->readonly = true;
  520. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  521. $this->assertEqualOrDiff('<button type="reset" name="nom" id="'.$this->formname.'_nom" class="jforms-reset">Votre nom</button>', $out);
  522. $ctrl->hint='ceci est un tooltip';
  523. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  524. $this->assertEqualOrDiff('<button type="reset" name="nom" id="'.$this->formname.'_nom" title="ceci est un tooltip" class="jforms-reset">Votre nom</button>', $out);
  525. }
  526. }
  527. ?>