use strict;
use lib ('.','../t','t/');
$^W = 1;
use Test::More tests => 8;
use Data::FormValidator;
my $input_profile = {
validator_packages => 'ValidatorPackagesTest1',
required => ['required_1','required_2','required_3'],
constraints => {
required_1 => 'single_validator_success_expected',
required_2 => 'single_validator_failure_expected',
},
field_filters => {
required_3 => 'single_filter_remove_whitespace',
},
};
my $validator = new Data::FormValidator({default => $input_profile});
my $input_hashref = {
required_1 => 123,
required_2 => 'testing',
required_3 => ' has whitespace ',
};
my ($valids, $missings, $invalids, $unknowns);
eval{
($valids, $missings, $invalids, $unknowns) = $validator->validate($input_hashref, 'default');
};
ok(not $@) or
diag "eval error: $@";
ok(defined $valids->{required_1});
# Test to make sure that the field failed imported validator
ok(grep /required_2/, @$invalids);
ok(defined $valids->{required_3});
is($valids->{required_3}, 'has whitespace');
#### Now test importing from multiple packages
$input_profile = {
validator_packages => ['ValidatorPackagesTest1','ValidatorPackagesTest2'],
required => ['required_1','required_2'],
constraints => {
required_1 => 'single_validator_success_expected',
required_2 => 'multi_validator_success_expected',
},
};
$validator = new Data::FormValidator({default => $input_profile});
$input_hashref = {
required_1 => 123,
required_2 => 'testing',
};
eval{
($valids, $missings, $invalids, $unknowns) = $validator->validate($input_hashref, 'default');
};
ok(defined $valids->{required_1});
ok(defined $valids->{required_2});
# Now test calling 'validate' as a class method
use Data::FormValidator;
eval {
my ($valid,$missing,$invalid) = Data::FormValidator->validate($input_hashref,{
required=>[qw/required_1/],
validator_packages=> 'Data::FormValidator',
});
};
ok(not $@);