0535da9294a35f8f58143a5bcdbf3c713c04aa59
[perl/html-form-simple.git] / t / html.t
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8 plan tests => 31;
9
10 use_ok('HTML::Form::Simple');
11
12 my $form = HTML::Form::Simple->new;
13 ok($form, 'new form');
14
15 # form
16
17 is(
18         $form->start,
19         '<form>',
20         'empty start'
21 );
22
23 is(
24         $form->start({method => 'get', action => '', ignore => undef}),
25         '<form action="" method="get">',
26         'start with attributes'
27 );
28
29 is(
30         eval { $form->start('should be a hashref') },
31         undef,
32         'invalid attributes'
33 );
34
35 is(
36         $form->stop,
37         '</form>',
38         'stop'
39 );
40
41 # hidden
42
43 is(
44         $form->hidden,
45         '<input type="hidden">',
46         'empty hidden'
47 );
48
49 is(
50         $form->hidden(foo => 'bar'),
51         '<input name="foo" type="hidden" value="bar">',
52         'hidden'
53 );
54
55 #TODO: hidden options
56
57 # submit
58
59 is(
60         $form->submit,
61         '<input type="submit">',
62         'empty submit'
63 );
64
65 is(
66         $form->submit('<OK>'),
67         '<input type="submit" value="&lt;OK>">',
68         'submit value'
69 );
70
71 is(
72         $form->submit({disabled => 1, id => 'test', type => 'button'}),
73         '<input disabled id="test" type="button">',
74         'submit attributes'
75 );
76
77 is(
78         $form->submit('<OK>', {type => '', value => 'override', id => ''}),
79         '<input value="&lt;OK>">',
80         'submit overrides'
81 );
82
83 # input
84
85 is(
86         $form->input,
87         '<input type="text">',
88         'empty input'
89 );
90
91 is(
92         $form->input(undef, undef, undef),
93         '<input type="text">',
94         'explicit empty input'
95 );
96
97 is(
98         $form->input('test'),
99         '<input id="test" name="test" type="text">',
100         'input with name'
101 );
102
103 is(
104         $form->input(undef, 'test'),
105         '<input type="text" value="test">',
106         'input with value'
107 );
108
109 is(
110         $form->input(undef, {value => 'test'}),
111         '<input type="text" value="test">',
112         'input with attribute value'
113 );
114
115 is(
116         $form->input({name => 'test', value => ''}),
117         '<input id="test" name="test" type="text" value="">',
118         'input with only attributes'
119 );
120
121 is(
122         $form->input('', '', {disabled => 0, something => undef}),
123         '<input name="" type="text" value="">',
124         'input with empty attributes'
125 );
126
127 is(
128         $form->input(undef, undef, {name => 'override', value => 'override'}),
129         '<input type="text">',
130         'ignore input overrides'
131 );
132
133 is(
134         $form->input('name', {id => ''}),
135         '<input name="name" type="text">',
136         'input with id override'
137 );
138
139 is(
140         $form->input('<">', '<">', {id => '>"<'}),
141         '<input id=">&quot;&lt;" name="&lt;&quot;>" type="text" value="&lt;&quot;>">',
142         'input quoting'
143 );
144
145 is(
146         $form->input(undef, {disabled => 'something'}),
147         '<input disabled type="text">',
148         'disabled input'
149 );
150
151 is(
152         $form->input({type => 'password'}),
153         '<input type="password">',
154         'password'
155 );
156
157 # textarea
158
159 is(
160         $form->input({rows => 0}),
161         '<textarea rows="0"></textarea>',
162         'minimal textarea'
163 );
164
165 is(
166         $form->input(foo => 'bar', {cols => 42, rows => 1, disabled => 1}),
167         '<textarea disabled cols="42" id="foo" name="foo" rows="1">bar</textarea>',
168         'textarea'
169 );
170
171 is(
172         $form->input(undef, qq{<foo>&bl'a"\n    .}, {cols => undef, rows => '<">'}),
173         qq{<textarea rows="&lt;&quot;>">&lt;foo>&amp;bl'a&quot;\n    .</textarea>},
174         'textarea quoting'
175 );
176
177 # select
178
179 is(
180         $form->select,
181         '<select></select>', # malformed html: at least 1 option required
182         'empty select'
183 );
184
185 is(
186         $form->select(undef, [], '', {name => ''}),
187         '<select></select>',
188         'explicit empty select'
189 );
190
191 is(
192         $form->select(undef, [undef]),
193         '<select><option></select>',
194         'minimal select'
195 );
196
197 is(
198         $form->select(foo => [1..2]),
199         '<select name="foo"><option value="1"><option value="2"></select>',
200         'select contents'
201 );
202
203 #TODO
204