From 8a4a17246fd4b2192fd9dac5d2380c09c666b5ee Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 15 Oct 2012 17:43:28 -0500 Subject: add maybe_doctype --- t/maybe-doctype.t | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 t/maybe-doctype.t (limited to 't/maybe-doctype.t') diff --git a/t/maybe-doctype.t b/t/maybe-doctype.t new file mode 100644 index 0000000..5d15365 --- /dev/null +++ b/t/maybe-doctype.t @@ -0,0 +1,75 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Moose::Util::TypeConstraints 'find_type_constraint'; + +use MooseX::Validation::Doctypes; + +doctype 'Person' => { + id => 'Str', + name => maybe_doctype({ + first => 'Str', + last => 'Str', + }), + title => 'Str', +}; + +{ + my $person = find_type_constraint('Person'); + isa_ok($person, 'Moose::Meta::TypeConstraint'); + isa_ok($person, 'MooseX::Meta::TypeConstraint::Doctype'); + + is_deeply( + $person->doctype, + { id => 'Str', name => $person->doctype->{name}, title => 'Str' }, + "got the right doctype" + ); + is_deeply( + $person->doctype->{name}->doctype, + { first => 'Str', last => 'Str' }, + "got the right doctype" + ); + + { + my $errors = $person->validate({ + id => '17382-QA', + name => { + first => 'Bob', + last => 'Smith', + }, + title => 'CIO' + }); + is($errors, undef, "no errors"); + } + + { + my $errors = $person->validate({ + id => '17382-QA', + name => { + first => [], + last => 'Smith', + }, + title => 'CIO', + }); + isa_ok($errors, 'MooseX::Validation::Doctypes::Errors'); + is_deeply( + $errors->errors, + { name => { first => "invalid value [ ] for 'name.first'" } }, + "got the right errors" + ); + is($errors->extra_data, undef, "no errors"); + } + + { + my $errors = $person->validate({ + id => '17382-QA', + title => 'CIO' + }); + is($errors, undef, "no errors"); + } +} + + +done_testing; -- cgit v1.2.3