{
has
'+name'
=> (
default
=>
'renderform'
);
has_field
'test_field'
=> (
type
=>
'Text'
,
label
=>
'TEST'
,
id
=>
'f99'
,
);
has_field
'fruit'
=> (
type
=>
'Select'
);
has_field
'vegetables'
=> (
type
=>
'Multiple'
);
has_field
'active'
=> (
type
=>
'Checkbox'
);
has_field
'comments'
=> (
type
=>
'TextArea'
);
has_field
'hidden'
=> (
type
=>
'Hidden'
);
has_field
'selected'
=> (
type
=>
'Boolean'
);
has_field
'start_date'
=> (
type
=>
'DateTime'
);
has_field
'start_date.month'
=> (
type
=>
'Integer'
,
range_start
=> 1,
range_end
=> 12 );
has_field
'start_date.day'
=> (
type
=>
'Integer'
,
range_start
=> 1,
range_end
=> 31 );
has_field
'start_date.year'
=> (
type
=>
'Integer'
,
range_start
=> 2000,
range_end
=> 2020 );
has
'+dependency'
=> (
default
=>
sub
{ [ [
'start_date.month'
,
'start_date.day'
,
'start_date.year'
] ] } );
sub
options_fruit {
return
(
1
=>
'apples'
,
2
=>
'oranges'
,
3
=>
'kiwi'
,
);
}
sub
options_vegetables {
return
(
1
=>
'lettuce'
,
2
=>
'broccoli'
,
3
=>
'carrots'
,
4
=>
'peas'
,
);
}
}
my
$form
= Test::Form->new;
ok(
$form
,
'create form'
);
my
$params
= {
test_field
=>
'something'
,
fruit
=> 2,
vegetables
=> [2,4],
active
=>
'now'
,
comments
=>
'Four score and seven years ago...'
,
hidden
=>
'1234'
,
selected
=>
'1'
,
'start_date.month'
=>
'7'
,
'start_date.day'
=>
'14'
,
'start_date.year'
=>
'2006'
,
};
$form
->validate(
$params
);
my
$output1
=
$form
->render_field(
$form
->field(
'test_field'
) );
is(
$output1
,
'
<label class=
"label"
for
=
"test_field"
>TEST:</label><input type=
"text"
name=
"test_field"
id=
"f99"
value=
"something"
>',
'output from text field'
);
my
$output2
=
$form
->render_field(
$form
->field(
'fruit'
) );
is(
$output2
,
'<label class="label" for="fruit">Fruit</label><select name="fruit""><option value="1" >apples</option><option value="2" selected="selected">oranges</option><option value="3" >kiwi</option></select>'
,
'output from select field'
);
my
$output3
=
$form
->render_field(
$form
->field(
'vegetables'
) );
is(
$output3
,
'<label class="label" for="vegetables">Vegetables</label><select name="vegetables" multiple="multiple" size="5""><option value="2" selected="selected">broccoli</option><option value="4" selected="selected">peas</option><option value="1" >lettuce</option><option value="3" >carrots</option></select>'
,
'output from select multiple field'
);
my
$output4
=
$form
->render_field(
$form
->field(
'active'
) );
is(
$output4
,
'<label class="label" for="active">Active</label><input type="checkbox" name="active" value="1"/>'
,
'output from checkbox field'
);
my
$output5
=
$form
->render_field(
$form
->field(
'comments'
) );
is(
$output5
,
'
<label class=
"label"
for
=
"comments"
>Comments: </label><textarea name=
"comments"
id=
"renderformcomments"
rows=
"5"
cols=
"10"
>Four score and seven years ago...</textarea>',
'output from textarea'
);
my
$output6
=
$form
->render_field(
$form
->field(
'hidden'
) );
is(
$output6
,
'
<label class=
"label"
for
=
"hidden"
>Hidden:</label><input type=
"hidden"
name=
"hidden"
id=
"renderformhidden"
value=
"1234"
>',
'output from hidden field'
);
my
$output7
=
$form
->render_field(
$form
->field(
'selected'
) );
is(
$output7
,
'<label class="label" for="selected">Selected</label><input type="checkbox" name="selected" value="1" checked="checked"/>'
,
'output from boolean'
);
my
$output8
=
$form
->render_field(
$form
->field(
'start_date'
) );
is(
$output8
,
'<fieldset class=
"start_date"
>
<label class=
"label"
for
=
"month"
>Month:</label><input type=
"text"
name=
"month"
id=
"renderformmonth"
value=
"7"
>
<label class=
"label"
for
=
"day"
>Day:</label><input type=
"text"
name=
"day"
id=
"renderformday"
value=
"14"
>
<label class=
"label"
for
=
"year"
>Year:</label><input type=
"text"
name=
"year"
id=
"renderformyear"
value=
"2006"
></fieldset>',
'output from DateTime'
);
my
$output
=
$form
->render;
ok(
$output
,
'get rendered output from form'
);