use strict;
use warnings;
use Test::More tests => 40;
use HTML::FormFu;
my $form = HTML::FormFu->new;
$form->element('Text')->name('foo');
$form->element('Text')->name('bar');
my @c1 = $form->constraint( {
type => 'Number',
names => [qw/ foo bar /],
} );
is( $c1[0]->name, 'foo' );
is( $c1[0]->type, 'Number' );
is( $c1[1]->name, 'bar' );
is( $c1[1]->type, 'Number' );
{
my @a = $form->constraint( [ {
type => 'Regex',
names => [qw/ foo bar /],
},
{ type => 'Required',
names => 'bar',
},
] );
is( $a[0]->name, 'foo' );
is( $a[0]->type, 'Regex' );
is( $a[1]->name, 'bar' );
is( $a[1]->type, 'Regex' );
is( $a[2]->name, 'bar' );
is( $a[2]->type, 'Required' );
}
# $element->constraint
my $ec_element = $form->element('Text')->name('ec');
$ec_element->constraint('Regex')->regex(qr/^\d+$/);
# Valid
{
$form->process( {
foo => 1,
bar => 2,
ec => 3,
} );
ok( $form->valid('foo'), 'foo valid' );
ok( $form->valid('bar'), 'bar valid' );
ok( $form->valid('ec'), 'ec valid' );
ok( grep { $_ eq 'foo' } $form->valid );
ok( grep { $_ eq 'bar' } $form->valid );
ok( grep { $_ eq 'ec' } $form->valid );
}
# Invalid
{
$form->process( {
foo => 1,
bar => 'baz',
ec => 'a',
} );
ok( $form->valid('foo'), 'foo valid' );
ok( !$form->valid('bar'), 'bar not valid' );
ok( !$form->valid('ec'), 'ec not valid' );
ok( grep { $_ eq 'foo' } $form->valid );
ok( !grep { $_ eq 'bar' } $form->valid );
ok( !grep { $_ eq 'ec' } $form->valid );
}
# Empty string Valid
{
$form->process( {
foo => '',
bar => 2,
ec => '',
} );
ok( $form->valid('foo'), 'foo valid' );
ok( $form->valid('bar'), 'bar valid' );
ok( $form->valid('ec'), 'ec not valid' );
ok( grep { $_ eq 'foo' } $form->valid );
ok( grep { $_ eq 'bar' } $form->valid );
ok( grep { $_ eq 'ec' } $form->valid );
}
# Missing Invalid
{
$form->process( {
foo => '',
bar => 2,
} );
ok( $form->valid('foo'), 'foo valid' );
ok( $form->valid('bar'), 'bar valid' );
ok( !$form->valid('ec'), 'ec not valid' );
ok( grep { $_ eq 'foo' } $form->valid );
ok( grep { $_ eq 'bar' } $form->valid );
ok( !grep { $_ eq 'ec' } $form->valid );
}
# zero "0" Valid
{
$form->process( {
foo => 0,
bar => 1,
ec => 0,
} );
ok( $form->valid('foo'), 'foo valid' );
ok( $form->valid('foo'), 'foo valid' );
ok( $form->valid('ec'), 'ec valid' );
ok( grep { $_ eq 'foo' } $form->valid );
ok( grep { $_ eq 'bar' } $form->valid );
ok( grep { $_ eq 'ec' } $form->valid );
}