libvalidation-class-perl/t/98-02-document-synopsis-adh...

56 lines
1.4 KiB
Perl
Raw Normal View History

2022-09-30 16:10:55 +08:00
use utf8;
use strict;
use warnings;
use Test::More;
package T;
use Validation::Class;
package main;
my $data = {
"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"
]
},
};
my $schema = {
'id' => { mixin => [':num'], max_length => 4 },
'name' => { mixin => [':str'], min_length => 2 },
'title' => { mixin => [':str'], min_length => 5 },
'company.name' => { mixin => [':str'], min_length => 2 },
'company.tags.@' => { mixin => [':str'], min_length => 2 },
'company.super*.name' => { mixin => [':str'], min_length => 2 },
'company.super*.rating.@.*' => { mixin => [':str'], },
};
my $class;
eval { $class = T->new };
ok "T" eq ref $class, "T instantiated";
can_ok $class, 'validate_document';
ok $class->validate_document($schema => $data), "T (ad-hoc data) validated";
ok $data->{id} !~ /\D/, "document ID has been filtered";
done_testing;