132 lines
3.5 KiB
Perl
132 lines
3.5 KiB
Perl
use FindBin;
|
|
use Test::More;
|
|
|
|
use utf8;
|
|
use strict;
|
|
use warnings;
|
|
|
|
{
|
|
|
|
package TestClass::FiltersUsage;
|
|
|
|
use Validation::Class;
|
|
|
|
filter 'flatten' => sub {
|
|
$_[0] =~ s/[\t\r\n]+/ /g;
|
|
return $_[0];
|
|
};
|
|
|
|
field 'biography' => {
|
|
filters => ['trim', 'strip', 'flatten'],
|
|
alias => ['bio']
|
|
};
|
|
|
|
1;
|
|
|
|
package main;
|
|
|
|
my $biography = <<'TEXT';
|
|
1. In arcu mi, sagittis vel pretium sit amet, tempor ac risus.
|
|
2. Integer facilisis, ante ac tincidunt euismod, metus tortor.
|
|
3. Suscipit erat, nec porta arcu urna eu nisl.
|
|
TEXT
|
|
|
|
my $self;
|
|
my $class = "TestClass::FiltersUsage";
|
|
|
|
$self = $class->new(biography => $biography);
|
|
|
|
ok $class eq ref $self, "$class instantiated";
|
|
is_deeply $self->fields->biography->filters, ['trim', 'strip', 'flatten'],
|
|
"$class has biography field with filters trim, strip and flatten";
|
|
ok $self->params->get('biography') =~ /^[^\n]+$/,
|
|
"$class biography filter executed as expected";
|
|
|
|
$self = $class->new(bio => $biography);
|
|
|
|
ok $class eq ref $self, "$class instantiated";
|
|
is_deeply $self->fields->biography->filters, ['trim', 'strip', 'flatten'],
|
|
"$class has biography field with filters trim, strip and flatten";
|
|
ok $self->params->get('biography') =~ /^[^\n]+$/,
|
|
"$class biography filter executed as expected";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
package TestClass::FiltersAliasUsage::A;
|
|
|
|
use Validation::Class;
|
|
|
|
field 'full_name' => {
|
|
filters => ['trim', 'strip', 'titlecase'],
|
|
alias => ['name']
|
|
};
|
|
|
|
1;
|
|
|
|
package main;
|
|
|
|
my $self;
|
|
my $class = "TestClass::FiltersAliasUsage::A";
|
|
|
|
$self = $class->new(full_name => 'elliot ');
|
|
|
|
ok $class eq ref $self, "$class instantiated";
|
|
is_deeply $self->fields->full_name->filters, ['trim', 'strip', 'titlecase'],
|
|
"$class has full_name field with filters trim, strip and titlecase";
|
|
ok $self->param('full_name') =~ /^Elliot$/,
|
|
"$class full_name filter executed as expected";
|
|
|
|
$self = $class->new(name => ' elliot ');
|
|
|
|
ok $class eq ref $self, "$class instantiated";
|
|
is_deeply $self->fields->full_name->filters, ['trim', 'strip', 'titlecase'],
|
|
"$class has full_name field with filters trim, strip and titlecase";
|
|
ok $self->param('full_name') =~ /^Elliot$/,
|
|
"$class full_name filter executed as expected";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
package TestClass::FiltersAliasUsage::B;
|
|
|
|
use Validation::Class;
|
|
|
|
field 'full_name' => {
|
|
filters => ['trim', 'strip', 'titlecase'],
|
|
alias => ['name']
|
|
};
|
|
|
|
1;
|
|
|
|
package main;
|
|
|
|
my $self;
|
|
my $class = "TestClass::FiltersAliasUsage::B";
|
|
|
|
$self = $class->new;
|
|
$self->params->add({name => 'elliot '});
|
|
$self->prototype->normalize($self);
|
|
|
|
ok $class eq ref $self, "$class instantiated";
|
|
is_deeply $self->fields->full_name->filters, ['trim', 'strip', 'titlecase'],
|
|
"$class has full_name field with filters trim, strip and titlecase";
|
|
ok $self->full_name =~ /^Elliot$/,
|
|
"$class full_name filter executed as expected";
|
|
|
|
$self = $class->new;
|
|
$self->params->add({name => ' elliot '});
|
|
$self->prototype->normalize($self);
|
|
|
|
ok $class eq ref $self, "$class instantiated";
|
|
is_deeply $self->fields->full_name->filters, ['trim', 'strip', 'titlecase'],
|
|
"$class has full_name field with filters trim, strip and titlecase";
|
|
ok $self->full_name =~ /^Elliot$/,
|
|
"$class full_name filter executed as expected";
|
|
|
|
}
|
|
|
|
done_testing;
|