1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;
{
package Test::Form;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
with 'HTML::FormHandler::Render::Table';
has '+name' => ( default => 'renderform' );
has_field 'test_field' => (
type => 'Text',
label => 'TEST',
id => 'f99',
);
has_field 'number';
has_field 'fruit' => ( type => 'Select' );
has_field 'vegetables' => ( type => 'Multiple' );
has_field 'opt_in' => ( type => 'Select', widget => 'RadioGroup',
options => [{ value => 0, label => 'No'}, { value => 1, label => 'Yes'} ] );
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_field 'two_errors' => (
apply => [
{ check => [ ], message => 'First constraint error' },
{ check => [ ], message => 'Second constraint error' }
]
);
has_field 'submit' => ( type => 'Submit', value => 'Update' );
has '+dependency' => ( default => sub { [ ['start_date.month',
'start_date.day', 'start_date.year'] ] } );
has_field 'no_render' => ( widget => 'NoRender' );
sub options_fruit {
return (
1 => 'apples',
2 => 'oranges',
3 => 'kiwi',
);
}
sub options_vegetables {
return (
1 => 'lettuce',
2 => 'broccoli',
3 => 'carrots',
4 => 'peas',
);
}
}
my $form = new_ok "Test::Form";
my $html ;
ok( $html = $form->render, 'get table rendered output from form');
like $html, qr/<form (.+)><table>/, "form start is rendered";
like $html, qr/<\/table>\n<\/form>/, "form end is rendered";
my $rendered = $form->render_field('number');
my $expected = '<tr><td><label for="number">Number</label></td><td><input id="number" name="number" type="text" value="" /></td></tr>';
is_html( $rendered, $expected, 'number field rendered ok' );
done_testing;
|