The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 7;

use HTML::FormFu;

my $form = HTML::FormFu->new;

$form->auto_fieldset( { nested_name => 'foo' } );

$form->element('Text')->name('bar')->constraint('Number');
$form->element('Text')->name('baz')->constraint('Number');
$form->element('Text')->name('bag')->constraint('Number');

$form->process( {
        'foo.bar'     => 1,
        'foo.baz'     => [ 2, 3 ],
        'foo.bag'     => 'yada',
        'foo.unknown' => 4,
    } );

is_deeply(
    [ sort( $form->valid ) ],
    [   qw/
            foo.bar
            foo.baz
            /
    ] );

ok( $form->valid('foo.bar') );
ok( $form->valid('foo.baz') );
ok( !$form->valid('foo.bag') );
ok( !$form->valid('foo.unknown') );

# new behaviour

# because a child has errors...
ok( !$form->valid('foo') );

# with no errors...

$form->process( {
        'foo.bar'     => 1,
        'foo.baz'     => [ 2, 3 ],
        'foo.bag'     => 9,
        'foo.unknown' => 4,
    } );

ok( $form->valid('foo') );