use strict; use warnings; use Test::More tests => 11; use HTML::FormFu; use DateTime; my $dt = DateTime->new( day => 6, month => 8, year => 2007 ); my $form = HTML::FormFu->new({ tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } }); $form->auto_fieldset( { nested_name => 'date' } ); $form->element('Date')->name('foo')->strftime("%m/%d/%Y") ->day( { prefix => '-- Day --', } )->month( { prefix => '-- Month --', short_names => 1, } )->year( { prefix => '-- Year --', list => [ 2007 .. 2017 ], } )->default($dt)->auto_inflate(1)->constraint('Required'); $form->element('Date')->name('bar')->default('14-08-2007') ->year( { list => [ 2007 .. 2017 ] } ); $form->process; is( "$form", <
HTML $form->process( { 'date.foo_day', 30, 'date.foo_month', 6, 'date.foo_year', 2007, 'date.bar_day', 1, 'date.bar_month', 7, 'date.bar_year', 2007, } ); ok( $form->submitted_and_valid ); my $foo = $form->param('date.foo'); my $bar = $form->param('date.bar'); isa_ok( $foo, 'DateTime' ); ok( !ref $bar ); is( $foo, "06/30/2007" ); is( $bar, "01-07-2007" ); my $foo_field = $form->get_field('foo'); my $bar_field = $form->get_field('bar'); is( "$form", <
HTML # incorrect date $form->process( { 'date.foo_day', 29, 'date.foo_month', 2, 'date.foo_year', 2007, } ); ok( $form->submitted ); ok( $form->has_errors ); ok( !defined $form->param('date.foo') ); is( "$form", <
Invalid date
HTML_ERRORS