use strict;
use warnings;
use Test::More;
{
package MyApp::Test::Form;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
has_field 'fee';
has_field 'fie' => ( apply => [
{ when => { fee => 1 }, check => qr/when/, message => 'Wrong fie' },
]);
has_field 'fo';
has_field 'fum_comp' => ( type => 'Compound' );
has_field 'fum_comp.one' => ( apply => [
{ when => { '+fee' => sub { $_[0] == 1 } }, check => qr/when/, message => 'Wrong one' },
]);
has_field 'fum_comp.two' => ( apply => [
{ when => { '+fee' => [1,2,3] }, check => qr/when/, message => 'Wrong two' },
]);
}
my $form = MyApp::Test::Form->new;
ok( $form );
my $params = {
fee => '',
fie => 'where',
fo => 'my_fo',
'fum_comp.one' => 2,
'fum_comp.two' => 'where',
};
$form->process( $params );
ok( $form->validated );
$params->{fee} = 1;
$form->process( $params );
ok( !$form->validated, 'validation failed for fie when fee is 1' );
my @errors = $form->errors;
is( scalar @errors, 3, 'right number of errors' );
done_testing;