1*f8369d7dSTobias Sarnowski<?php 2*f8369d7dSTobias Sarnowski 3*f8369d7dSTobias Sarnowskirequire_once DOKU_INC.'inc/init.php'; 4*f8369d7dSTobias Sarnowski 5*f8369d7dSTobias Sarnowskiclass form_test extends DokuWikiTest { 6*f8369d7dSTobias Sarnowski 7*f8369d7dSTobias Sarnowski function _testform() { 8*f8369d7dSTobias Sarnowski $form = new Doku_Form(array('id' => 'dw__testform', 'action' => '/test')); 9*f8369d7dSTobias Sarnowski $form->startFieldset('Test'); 10*f8369d7dSTobias Sarnowski $form->addHidden('summary', 'changes &c'); 11*f8369d7dSTobias Sarnowski $form->addElement(form_makeTextField('t', 'v', 'Text', 'text__id', 'block')); 12*f8369d7dSTobias Sarnowski $form->addElement(form_makeCheckboxField('r', '1', 'Check', 'check__id', 'simple')); 13*f8369d7dSTobias Sarnowski $form->addElement(form_makeButton('submit', 'save', 'Save', array('accesskey'=>'s'))); 14*f8369d7dSTobias Sarnowski $form->addElement(form_makeButton('submit', 'cancel', 'Cancel')); 15*f8369d7dSTobias Sarnowski $form->endFieldset(); 16*f8369d7dSTobias Sarnowski return $form; 17*f8369d7dSTobias Sarnowski } 18*f8369d7dSTobias Sarnowski 19*f8369d7dSTobias Sarnowski function _realoutput() { 20*f8369d7dSTobias Sarnowski global $lang; 21*f8369d7dSTobias Sarnowski $realoutput = '<form id="dw__testform" action="/test" method="post" '; 22*f8369d7dSTobias Sarnowski $realoutput .= 'accept-charset="'.$lang['encoding'].'">'; 23*f8369d7dSTobias Sarnowski $realoutput .= "\n"; 24*f8369d7dSTobias Sarnowski $realoutput .= '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" />'; 25*f8369d7dSTobias Sarnowski $realoutput .= '<input type="hidden" name="summary" value="changes &c" />'; 26*f8369d7dSTobias Sarnowski $realoutput .= "\n"; 27*f8369d7dSTobias Sarnowski $realoutput .= "<fieldset ><legend>Test</legend>\n"; 28*f8369d7dSTobias Sarnowski $realoutput .= '<label class="block" for="text__id"><span>Text</span> '; 29*f8369d7dSTobias Sarnowski $realoutput .= '<input type="text" id="text__id" name="t" value="v" class="edit" /></label><br />'; 30*f8369d7dSTobias Sarnowski $realoutput .= "\n"; 31*f8369d7dSTobias Sarnowski $realoutput .= '<label class="simple" for="check__id">'; 32*f8369d7dSTobias Sarnowski $realoutput .= '<input type="checkbox" id="check__id" name="r" value="1" /> '; 33*f8369d7dSTobias Sarnowski $realoutput .= '<span>Check</span></label>'; 34*f8369d7dSTobias Sarnowski $realoutput .= "\n"; 35*f8369d7dSTobias Sarnowski $realoutput .= '<input name="do[save]" type="submit" value="Save" class="button" accesskey="s" title="Save [S]" />'; 36*f8369d7dSTobias Sarnowski $realoutput .= "\n"; 37*f8369d7dSTobias Sarnowski $realoutput .= '<input name="do[cancel]" type="submit" value="Cancel" class="button" />'; 38*f8369d7dSTobias Sarnowski $realoutput .= "\n"; 39*f8369d7dSTobias Sarnowski $realoutput .= "</fieldset>\n</div></form>\n"; 40*f8369d7dSTobias Sarnowski return $realoutput; 41*f8369d7dSTobias Sarnowski } 42*f8369d7dSTobias Sarnowski 43*f8369d7dSTobias Sarnowski function _ignoreTagWS($data){ 44*f8369d7dSTobias Sarnowski return preg_replace('/>\s+</','><',$data); 45*f8369d7dSTobias Sarnowski } 46*f8369d7dSTobias Sarnowski 47*f8369d7dSTobias Sarnowski function test_form_print() { 48*f8369d7dSTobias Sarnowski $form = $this->_testform(); 49*f8369d7dSTobias Sarnowski ob_start(); 50*f8369d7dSTobias Sarnowski $form->printForm(); 51*f8369d7dSTobias Sarnowski $output = ob_get_contents(); 52*f8369d7dSTobias Sarnowski ob_end_clean(); 53*f8369d7dSTobias Sarnowski $form->addHidden('sectok', getSecurityToken()); 54*f8369d7dSTobias Sarnowski $this->assertEquals($this->_ignoreTagWS($output),$this->_ignoreTagWS($this->_realoutput())); 55*f8369d7dSTobias Sarnowski } 56*f8369d7dSTobias Sarnowski 57*f8369d7dSTobias Sarnowski function test_get_element_at() { 58*f8369d7dSTobias Sarnowski $form = $this->_testform(); 59*f8369d7dSTobias Sarnowski $e1 =& $form->getElementAt(1); 60*f8369d7dSTobias Sarnowski $this->assertEquals($e1, array('_elem'=>'textfield', 61*f8369d7dSTobias Sarnowski '_text'=>'Text', 62*f8369d7dSTobias Sarnowski '_class'=>'block', 63*f8369d7dSTobias Sarnowski 'id'=>'text__id', 64*f8369d7dSTobias Sarnowski 'name'=>'t', 65*f8369d7dSTobias Sarnowski 'value'=>'v', 66*f8369d7dSTobias Sarnowski 'class'=>'edit')); 67*f8369d7dSTobias Sarnowski $e2 =& $form->getElementAt(99); 68*f8369d7dSTobias Sarnowski $this->assertEquals($e2, array('_elem'=>'closefieldset')); 69*f8369d7dSTobias Sarnowski } 70*f8369d7dSTobias Sarnowski 71*f8369d7dSTobias Sarnowski function test_find_element_by_type() { 72*f8369d7dSTobias Sarnowski $form = $this->_testform(); 73*f8369d7dSTobias Sarnowski $this->assertEquals($form->findElementByType('button'), 3); 74*f8369d7dSTobias Sarnowski $this->assertFalse($form->findElementByType('text')); 75*f8369d7dSTobias Sarnowski } 76*f8369d7dSTobias Sarnowski 77*f8369d7dSTobias Sarnowski function test_find_element_by_id() { 78*f8369d7dSTobias Sarnowski $form = $this->_testform(); 79*f8369d7dSTobias Sarnowski $this->assertEquals($form->findElementById('check__id'), 2); 80*f8369d7dSTobias Sarnowski $this->assertFalse($form->findElementById('dw__testform')); 81*f8369d7dSTobias Sarnowski } 82*f8369d7dSTobias Sarnowski 83*f8369d7dSTobias Sarnowski function test_find_element_by_attribute() { 84*f8369d7dSTobias Sarnowski $form = $this->_testform(); 85*f8369d7dSTobias Sarnowski $this->assertEquals($form->findElementByAttribute('value','Cancel'), 4); 86*f8369d7dSTobias Sarnowski $this->assertFalse($form->findElementByAttribute('name','cancel')); 87*f8369d7dSTobias Sarnowski } 88*f8369d7dSTobias Sarnowski 89*f8369d7dSTobias Sarnowski function test_close_fieldset() { 90*f8369d7dSTobias Sarnowski $form = new Doku_Form(array('id' => 'dw__testform', 'action' => '/test')); 91*f8369d7dSTobias Sarnowski $form->startFieldset('Test'); 92*f8369d7dSTobias Sarnowski $form->addHidden('summary', 'changes &c'); 93*f8369d7dSTobias Sarnowski $form->addElement(form_makeTextField('t', 'v', 'Text', 'text__id', 'block')); 94*f8369d7dSTobias Sarnowski $form->addElement(form_makeCheckboxField('r', '1', 'Check', 'check__id', 'simple')); 95*f8369d7dSTobias Sarnowski $form->addElement(form_makeButton('submit', 'save', 'Save', array('accesskey'=>'s'))); 96*f8369d7dSTobias Sarnowski $form->addElement(form_makeButton('submit', 'cancel', 'Cancel')); 97*f8369d7dSTobias Sarnowski ob_start(); 98*f8369d7dSTobias Sarnowski $form->printForm(); 99*f8369d7dSTobias Sarnowski $output = ob_get_contents(); 100*f8369d7dSTobias Sarnowski ob_end_clean(); 101*f8369d7dSTobias Sarnowski $this->assertEquals($this->_ignoreTagWS($output),$this->_ignoreTagWS($this->_realoutput())); 102*f8369d7dSTobias Sarnowski } 103*f8369d7dSTobias Sarnowski 104*f8369d7dSTobias Sarnowski} 105