File: 98-02-document-synopsis-filtering.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 (72 lines) | stat: -rw-r--r-- 1,721 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
65
66
67
68
69
70
71
72
use utf8;
use strict;
use warnings;
use Test::More;

package T;

use Validation::Class;

field  'title';
field  'rating';
field  'name';

field  'id' => { filters => ['numeric'] };

document 'person' => {
    'id'                                   => 'id',
    'name'                                 => 'name',
    'title'                                => 'title',
    'company.name'                         => 'name',
    'company.supervisor.name'              => 'name',
    'company.supervisor.rating.@.support'  => 'rating',
    'company.supervisor.rating.@.guidance' => 'rating',
    'company.tags.@'                       => 'name'
};

package main;

my $class;

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

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

my $documents = $class->prototype->documents;

ok "Validation::Class::Mapping" eq ref $documents, "T documents hash registered as setting";

ok 1 == keys %{$documents}, "T has 1 registered document";

my $person = $documents->{person};

ok 8 == keys %{$person}, "T user document has 3 mappings";

can_ok $class, 'validate_document';

$person = {
    "id"      => "1234-ABC",
    "name"    => "Anita Campbell-Green",
    "title"   => "Designer",
    "company" => {
        "name"       => "House of de Vil",
        "supervisor" => {
            "name"   => "Cruella de Vil",
            "rating" => [
                {   "support"  => -9,
                    "guidance" => -9
                }
            ]
        },
        "tags" => [
            "evil",
            "cruelty",
            "dogs"
        ]
    },
};

ok $class->validate_document(person => $person), "T document (person) validated";
ok $person->{id} !~ /\D/, "person document has been filtered";

done_testing;