xref: /dokuwiki/_test/tests/inc/form_form.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
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 &amp;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