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