use strict;
use warnings;
use utf8;
use Test::More;
use ThaiSchema;
use Data::Dumper;
BEGIN { *describe = *context = *it = *Test::More::subtest }
describe 'match_schema' => sub {
context 'no error' => sub {
my ($ok, $errors) = match_schema({x => 1}, {x => type_int});
it 'have no error' => sub {
ok($ok);
is_deeply($errors, []);
};
};
context 'have one error in hash element' => sub {
my ($ok, $errors) = match_schema({x => 'hoge'}, {x => type_int});
it 'have no error' => sub {
ok(not $ok);
is_deeply($errors, ['x is not int']) or diag Dumper($errors);
};
};
context 'have one error in deep hash element' => sub {
my ($ok, $errors) = match_schema({x => { y => 'hoge'}}, {x => {y => type_int}});
it 'have no error' => sub {
ok(not $ok);
is_deeply($errors, ['x.y is not int']) or diag Dumper($errors);
};
};
context 'have one error in array' => sub {
my ($ok, $errors) = match_schema(['x'], type_array(type_int));
it 'have no error' => sub {
ok(not $ok);
is_deeply($errors, ['[0] is not int']) or diag Dumper($errors);
};
};
context 'have one error in array, hash' => sub {
my ($ok, $errors) = match_schema([{x => 'hoge'}], type_array({ x => type_int}));
it 'have no error' => sub {
ok(not $ok);
is_deeply($errors, ['[0].x is not int']) or diag Dumper($errors);
};
};
};
done_testing;