4 use Test::More tests => 16;
12 use_ok( 'WebPAC::Validate' );
15 my $debug = shift @ARGV;
17 ok(my $abs_path = abs_path($0), "abs_path");
18 $abs_path =~ s#/[^/]*$#/#;
20 throws_ok { new WebPAC::Validate( no_log => 1 ) } qr/need path/, "new without path";
22 ok(my $v = new WebPAC::Validate(
23 path => "$abs_path/data/validate_test",
26 ok($v->{rules}, "rules exist");
28 is_deeply( $v->{rules}, {
31 '902' => [ 'b', 'c' ],
32 '903' => [ 'a', 'b', 'c' ],
35 throws_ok { $v->validate_errors() } qr/rec/, "validate_rec need rec";
37 ok($v->validate_errors({ '900' => 'foo' }), '900 garbage input');
39 ok(! $v->validate_errors({
40 '900' => [ qw/foo bar baz/ ]
43 ok($v->validate_errors({
44 '901' => [ qw/foo bar baz/ ]
47 ok(! $v->validate_errors({
48 '901' => [ { 'a' => 42 } ]
51 ok($v->validate_errors({
52 '901' => [ { 'b' => 42 } ]
55 ok(! $v->validate_errors({
56 '902' => [ { 'b' => 1 }, { 'c' => 2 } ]
59 ok($v->validate_errors({
60 '902' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ]
61 }), '902^a 902^b 902^c');
63 ok(! $v->validate_errors({
64 '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 } ]
65 }), '903^a 903^b 903^c');
67 ok($v->validate_errors({
68 '903' => [ { 'a' => 0 }, { 'b' => 1 }, { 'c' => 2 }, { 'd' => 3 } ]
69 }), '903^a 903^b 903^c 903^d');