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