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