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