File: 03_dependency.t

package info (click to toggle)
libdata-formvalidator-perl 4.66-1%2Bsqueeze1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 588 kB
  • ctags: 127
  • sloc: perl: 2,756; makefile: 2
file content (107 lines) | stat: -rw-r--r-- 2,517 bytes parent folder | download | duplicates (6)
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");