1use strict;
2use warnings;
3
4use Test::More;
5
6eval { require Template; };
7
8if ($@) {
9    plan skip_all => 'Template.pm required';
10    die $@;
11}
12else {
13    plan tests => 1;
14}
15
16use HTML::FormFu;
17
18my $form = HTML::FormFu->new(
19    { tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } } );
20
21$form->auto_fieldset( { legend => 'Foo' } );
22
23$form->element('Text')->name('foo')->label('Foo');
24$form->element('Text')->name('bar')->label('Bar');
25$form->element('Hidden')->name('baz');
26$form->element('Submit')->name('submit');
27
28my $template = Template->new;
29my $output;
30
31$template->process( \*DATA, { form => $form }, \$output )
32    or die $template->error;
33
34my $xhtml = <<EOF;
35<html>
36<body>
37<form action="" method="post">
38<fieldset>
39<legend>Foo</legend>
40<label>Foo</label>: <input name="foo" type="text" />
41<label>Bar</label>: <input name="bar" type="text" />
42<input name="baz" type="hidden" />
43<div>
44<input name="submit" type="submit" />
45</div>
46</fieldset>
47</form>
48</body>
49</html>
50EOF
51
52is( $output, $xhtml );
53
54__DATA__
55<html>
56<body>
57[% form.start %]
58[% form.get_element('type', 'Fieldset').start %]
59[% form.get_field('foo').render_label %]: [% form.get_field('foo').render_field %]
60[% form.get_field('bar').render_label %]: [% form.get_field('bar').render_field %]
61[% form.get_field('baz') %]
62[% form.get_field('submit') %]
63[% form.get_element('type', 'Fieldset').end %]
64[% form.end %]
65</body>
66</html>
67