1use strict; 2use warnings; 3 4use Test::More tests => 24; 5 6use HTML::FormFu; 7 8my $form = HTML::FormFu->new->indicator( sub {1} ); 9 10$form->element('Text')->name('foo')->constraint('AllOrNone') 11 ->others( [qw/ bar baz bif /] )->force_errors(1); 12 13$form->element('Text')->name('bar'); 14$form->element('Text')->name('baz'); 15$form->element('Text')->name('bif'); 16 17# Valid 18{ 19 $form->process( 20 { foo => 1, 21 bar => 'a', 22 baz => [2], 23 bif => [ 3, 4 ], 24 } ); 25 26 ok( $form->submitted_and_valid ); 27 28 ok( !$form->has_errors('foo') ); 29 ok( !$form->has_errors('bar') ); 30 ok( !$form->has_errors('baz') ); 31 ok( !$form->has_errors('bif') ); 32 33 ok( @{ $form->get_errors( { name => 'foo', forced => 1 } ) } ); 34 ok( @{ $form->get_errors( { name => 'bar', forced => 1 } ) } ); 35 ok( @{ $form->get_errors( { name => 'baz', forced => 1 } ) } ); 36 ok( @{ $form->get_errors( { name => 'bif', forced => 1 } ) } ); 37} 38 39# Valid 40{ 41 $form->process( {} ); 42 43 ok( $form->submitted_and_valid ); 44 45 ok( !$form->has_errors('foo') ); 46 ok( !$form->has_errors('bar') ); 47 ok( !$form->has_errors('baz') ); 48 ok( !$form->has_errors('bif') ); 49 50 ok( @{ $form->get_errors( { name => 'foo', forced => 1 } ) } ); 51 ok( @{ $form->get_errors( { name => 'bar', forced => 1 } ) } ); 52 ok( @{ $form->get_errors( { name => 'baz', forced => 1 } ) } ); 53 ok( @{ $form->get_errors( { name => 'bif', forced => 1 } ) } ); 54} 55 56# Invalid 57{ 58 $form->process( 59 { foo => 1, 60 bar => '', 61 baz => [2], 62 bif => [ 3, 4 ], 63 } ); 64 65 ok( !$form->submitted_and_valid ); 66 67 ok( !$form->has_errors('foo') ); 68 ok( $form->has_errors('bar') ); 69 ok( !$form->has_errors('baz') ); 70 ok( !$form->has_errors('bif') ); 71 72 ok( @{ $form->get_errors( { name => 'bar', forced => 1 } ) } ); 73} 74