1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
# Tests for missing_optional_valid
use Test::More 'no_plan';
use strict;
$^W = 1;
use Data::FormValidator;
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");
# "not_filled" should appear valids now.
ok (exists $valids->{'not_filled'});
# "should_be_unknown" should be still be unknown
ok($unknowns->[0] eq 'should_be_unknown');
eval {
require CGI;
};
SKIP: {
skip 'CGI.pm 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 $@);
# "not_filled" should appear valids now.
ok (exists $valids->{'not_filled'});
# "should_be_unknown" should be still be unknown
ok($unknowns->[0] eq 'should_be_unknown');
};
{
my $res = Data::FormValidator->check(
{ a => 1,
b => undef,
# c is completely missing
},
{ 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');
}
|