File: 22-filtering-behavior.t

package info (click to toggle)
libvalidation-class-perl 7.900057-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,572 kB
  • ctags: 355
  • sloc: perl: 21,493; makefile: 2
file content (62 lines) | stat: -rw-r--r-- 1,643 bytes parent folder | download | duplicates (5)
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
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';