File: 98-03-document-example-method-usages.t

package info (click to toggle)
libvalidation-class-perl 7.900057-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 1,616 kB
  • sloc: perl: 21,493; makefile: 2
file content (64 lines) | stat: -rw-r--r-- 1,370 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
63
64
use utf8;
use strict;
use warnings;
use Test::More;

{

    package T;

    use Validation::Class;

    field name => {
        min_length => 2,
        max_length => 100
    };

    document user => {
        'name.first' => 'name',
        'name.last'  => 'name'
    };

    method set_user => {
        input_document => 'user',
        using          => sub { $_[1] }
    };

    package main;

    my $data = { name => { first => undef } };

    my $class = eval { T->new };

    ok "T" eq ref $class, "T instantiated";

    ok $class->set_user($data),
      "T document (user) is valid; nothing required";

    my $user = $class->proto->documents->get('user');

    $user->{'name.first'} = '+name';

    ok !$class->set_user($data) && $class->errors_to_string =~ /name\.first/,
      "T document (user) is NOT valid; name.first required";

    $user->{'name.first'}   = 'name';

    $data->{name}->{first}  = 'friendly';
    $data->{name}->{middle} = 'guy';

    is_deeply
        { name => { first => 'friendly', middle => 'guy', last => undef } },
        $class->set_user($data),
        'T document (user) is valid; return value expected'
    ;

    is_deeply
        { name => { first => 'friendly', last => undef } },
        $class->set_user($data, { prune => 1 }),
        'T document (user) is valid; pruned return value expected'
    ;

}

done_testing;