File: 22_messages.t

package info (click to toggle)
libformvalidator-simple-perl 0.29-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 412 kB
  • sloc: perl: 3,043; makefile: 4
file content (113 lines) | stat: -rw-r--r-- 3,159 bytes parent folder | download | duplicates (6)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
use strict;
use Test::More tests => 25;
BEGIN{ use_ok("FormValidator::Simple") }
use CGI;

my $data = {
    DEFAULT => {
        data4 => {
            DEFAULT => 'input data4',    
        },
    },
    test => {
        data1 => {
            NOT_BLANK => 'input data1',
            INT       => 'input integer for data1',
            LENGTH    => 'data1 has wrong length',
        },
        data2 => {
            DEFAULT => 'default error for data2',
        },
        data3 => {
            NOT_BLANK => 'input data3',
        },
    },
};

FormValidator::Simple->set_messages( $data );

my $q = CGI->new;
$q->param( data1 => 'hoge' );
$q->param( data2 => '123'  );
$q->param( data3 => ''     );
$q->param( data4 => ''     );

my $r = FormValidator::Simple->check( $q => [
    data1 => [qw/NOT_BLANK INT/, [qw/LENGTH 0 3/] ],
    data2 => [qw/NOT_BLANK ASCII/, [qw/LENGTH 5/]],
    data3 => [qw/NOT_BLANK/], 
    data4 => [qw/NOT_BLANK/],
] );

my $messages = $r->messages('test');
is($messages->[0], 'input integer for data1');
is($messages->[1], 'data1 has wrong length');
is($messages->[2], 'default error for data2');
is($messages->[3], 'input data3');
is($messages->[4], 'input data4');

# check that messages on object don't trash class messages
my $fvs = FormValidator::Simple->new;

is_deeply(FormValidator::Simple->messages->{_data}, $data);

# set your own
my $objdata = {
  object => {
    object1 => {
      NOT_BLANK => 'not blank for object1',
    },
    object2 => {
      LENGTH => 'length wrong for object2',
    },
  }
};

# object has its messages
$fvs->set_messages( $objdata );
is_deeply($fvs->messages->{_data}, $objdata);

# class should be int tact
is_deeply(FormValidator::Simple->messages->{_data}, $data);

my $oq = CGI->new;
$oq->param( object1 => ''       );
$oq->param( object2 => 'abcdef' );

my $or = $fvs->check( $oq => [
    object1 => [ [qw/NOT_BLANK/] ],
    object2 => [ [qw/LENGTH 1 2/] ],
] );

my $omessages = $or->messages('object');
is($omessages->[0], 'not blank for object1');
is($omessages->[1], 'length wrong for object2');

my $field_messages = $or->field_messages('object');
is(scalar @{ $field_messages->{object1} }, 1);
is(scalar @{ $field_messages->{object2} }, 1);
is($field_messages->{object1}[0], 'not blank for object1');
is($field_messages->{object2}[0], 'length wrong for object2');

# make sure the class version still works:
my $nr = FormValidator::Simple->check( $q => [
  data1 => [qw/NOT_BLANK INT/, [qw/LENGTH 0 3/] ],
  data2 => [qw/NOT_BLANK ASCII/, [qw/LENGTH 5/] ],
  data3 => [qw/NOT_BLANK/],
  data4 => [qw/NOT_BLANK/],
] );

my $nmessages = $nr->messages('test');
is($nmessages->[0], 'input integer for data1');
is($nmessages->[1], 'data1 has wrong length');
is($nmessages->[2], 'default error for data2');
is($nmessages->[3], 'input data3');
is($nmessages->[4], 'input data4');

my $nfmessages = $nr->field_messages('test');
is($nfmessages->{data1}[0], 'input integer for data1');
is($nfmessages->{data1}[1], 'data1 has wrong length');
is($nfmessages->{data2}[0], 'default error for data2');
is($nfmessages->{data3}[0], 'input data3');
is($nfmessages->{data4}[0], 'input data4');