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 98 99 100 101 102 103 104 105 106 107
|
use strict;
$^W = 1;
use Test::More tests => 23;
use Data::FormValidator;
# test profile
my $input_profile = {
dependencies => {
pay_type => {
Check => [qw( cc_num )],
# Value of Zero is used for test for a specific bug
0 => [qw( cc_num cc_exp cc_name )],
},
},
};
my $input_hashref = {pay_type=>'0'};
##
## Validate a complex dependency
##
##
## validate()
my ($valids, $missings, $invalids, $unknowns);
my $validator = Data::FormValidator->new({default => $input_profile});
eval{
($valids, $missings, $invalids, $unknowns) = $validator->validate($input_hashref, 'default');
};
ok(!$@, "no eval problems");
my %missings = map {$_ => 1} @$missings;
ok($missings{cc_num}, "missing cc_num");
ok($missings{cc_exp}, "missing cc_exp");
ok($missings{cc_name}, "missing cc_name");
##
## check()
my $result;
eval {
$result = $validator->check($input_hashref, 'default');
};
ok(!$@, "no eval problems");
isa_ok($result, "Data::FormValidator::Results", "returned object");
ok($result->has_missing, "has_missing returned true");
ok($result->missing('cc_num'), "missing('cc_num') returned true");
ok($result->missing('cc_exp'), "missing('cc_exp') returned true");
ok($result->missing('cc_name'), "missing('cc_name') returned true");
##
## validate()
$input_hashref = {pay_type=>'Check'
};
eval{
($valids, $missings, $invalids, $unknowns) = $validator->validate($input_hashref, 'default');
};
ok(!$@, "no eval problems");
%missings = map {$_ => 1} @$missings;
ok($missings{cc_num}, 'missing cc_num');
ok(!$missings{cc_exp}, 'not missing cc_exp');
ok(!$missings{cc_name}, 'not missing cc_name');
##
## check()
$result = undef;
eval {
$result = $validator->check($input_hashref, 'default');
};
ok(!$@, "no eval problems");
isa_ok($result, "Data::FormValidator::Results", "returned object");
ok($result->has_missing, "has_missing returned true");
ok($result->missing('cc_num'), "missing('cc_num') returned true");
is($result->missing('cc_exp'), undef, "missing('cc_exp') returned false");
is($result->missing('cc_name'), undef, "missing('cc_name') returned false");
## Now, some tests using a CGI.pm object as input
use CGI;
my $q = CGI->new('pay_type=0');
my $results;
eval {
$results = $validator->check($q, 'default');
};
ok($results->missing('cc_num'), 'using CGI.pm object for input');
is($result->missing('cc_exp'), undef, "missing('cc_exp') returned false");
is($result->missing('cc_name'), undef, "missing('cc_name') returned false");
|