#!/usr/bin/env perl
my
$input_profile
= {
required
=> [
qw( email_1 email_ok)
],
optional
=> [
'filled'
,
'not_filled'
],
constraint_regexp_map
=> {
'/^email/'
=>
"email"
,
},
constraints
=> {
not_filled
=>
'phone'
,
},
missing_optional_valid
=> 1,
};
my
$validator
= new Data::FormValidator( {
default
=>
$input_profile
} );
my
$input_hashref
= {
email_1
=>
'invalidemail'
,
email_ok
=>
'mark@stosberg.com'
,
filled
=>
'dog'
,
not_filled
=>
''
,
should_be_unknown
=> 1,
};
my
(
$valids
,
$missings
,
$invalids
,
$unknowns
);
eval
{
(
$valids
,
$missings
,
$invalids
,
$unknowns
) =
$validator
->validate(
$input_hashref
,
'default'
);
};
is( $@,
''
,
"survived eval"
);
ok(
exists
$valids
->{
'not_filled'
} );
ok(
$unknowns
->[0] eq
'should_be_unknown'
);
eval
{
require
CGI;CGI->VERSION(4.35); };
SKIP:
{
skip
'CGI 4.35 or higher not found'
, 3
if
$@;
my
$q
= CGI->new(
$input_hashref
);
my
(
$valids
,
$missings
,
$invalids
,
$unknowns
);
eval
{
(
$valids
,
$missings
,
$invalids
,
$unknowns
) =
$validator
->validate(
$q
,
'default'
);
};
ok( not $@ );
ok(
exists
$valids
->{
'not_filled'
} );
ok(
$unknowns
->[0] eq
'should_be_unknown'
);
}
{
my
$res
= Data::FormValidator->check( {
a
=> 1,
b
=>
undef
,
},
{
optional
=> [
qw/a b c/
],
missing_optional_valid
=> 1
} );
is(
join
(
','
,
sort
$res
->valid() ),
'a,b'
,
"optional fields have to at least exist to be valid"
);
}
{
my
$data
= {
optional_invalid
=>
'invalid'
};
my
$profile
= {
optional
=> [
qw/optional_invalid/
],
constraints
=> {
optional_invalid
=>
qr/^valid$/
},
missing_optional_valid
=> 1
};
my
$results
= Data::FormValidator->check(
$data
,
$profile
);
my
$valid
=
$results
->valid();
my
$invalid
=
$results
->invalid();
ok(
exists
$invalid
->{
'optional_invalid'
},
'optional_invalid is invalid'
);
ok( !
exists
$valid
->{
'optional_invalid'
},
'optional_invalid is not valid'
);
}