use Test::More tests => 9;
# begin
package MyVal;
use Validation::Class;
mixin 'trim' => {filters => [qw/trim strip/]};
field 'dist' => {
mixin => 'trim',
label => 'distribution',
error => 'invalid distribution description',
filters => sub { $_[0] =~ s/::/-/g; $_[0] },
pattern => qr/[a-zA-Z0-9\-:]+(\-[0-9\.\_\-]+)?/,
max_length => 150
};
field 'login',
{ label => 'user login',
error => 'login invalid',
filtering => 'post',
filters => [qw/trim strip alphanumeric/]
};
field 'password', {
label => 'user password',
error => 'password invalid',
# no filtering at all
};
field 'name',
{ label => 'user name',
error => 'invalid name',
filtering => 'pre',
filters => [qw/trim strip alpha titlecase/]
};
package main;
my $rules = MyVal->new(
params => {
name => 'george 3',
login => 'admin@abco.com',
password => '#!/bin/bash',
dist => ' Validation::Class '
}
);
ok $rules, 'validation class init ok';
ok $rules->params->{name} =~ /^George$/, 'name as expected';
ok $rules->params->{login} =~ /^admin\@abco\.com$/, 'login as expected';
ok $rules->params->{password} =~ /^#!\/bin\/bash$/, 'password as expected';
ok $rules->validate, 'validation failed ok';
ok $rules->params->{name} =~ /^George$/, 'name as expected';
ok $rules->params->{login} =~ /^adminabcocom$/, 'login as expected';
ok $rules->params->{password} =~ /^#!\/bin\/bash$/, 'password as expected';
ok $rules->params->{dist} =~ /^Validation-Class$/, 'dist as expected';