X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F008_do_not_serialize.t;h=200e90b6f7e326ef02c148d70b85db79e864bde0;hb=9d3c60f5f35a8d28951049e8daccd9f67c22f9aa;hp=adc8e140d3899f46efe1d0f47a4c3485051d4a3c;hpb=186d680b4c69cdbe0306d0e891d879d58af661fe;p=gitmo%2FMooseX-Storage.git diff --git a/t/008_do_not_serialize.t b/t/008_do_not_serialize.t index adc8e14..200e90b 100644 --- a/t/008_do_not_serialize.t +++ b/t/008_do_not_serialize.t @@ -3,8 +3,8 @@ use strict; use warnings; -use Test::More tests => 11; -use Test::Exception; +use Test::More tests => 13; +use Test::Fatal; BEGIN { use_ok('MooseX::Storage'); @@ -65,6 +65,7 @@ BEGIN { metaclass => 'DoNotSerialize', required => 1, is => 'rw', + isa => 'Object', # type constraint is important ); has zot => ( @@ -73,10 +74,11 @@ BEGIN { ); } -{ my $bar = Bar->new( foo => $$ ); +{ my $obj = bless {}; + my $bar = Bar->new( foo => $obj ); ok( $bar, "New object created" ); - is( $bar->foo, $$, " ->foo => $$" ); + is( $bar->foo, $obj, " ->foo => $obj" ); is( $bar->zot, $$, " ->zot => $$" ); my $bpack = $bar->pack; @@ -86,8 +88,12 @@ BEGIN { zot => $$, }, " Packed correctly" ); - my $bar2 = Bar->unpack({ %$bpack, foo => $$ }); - ok( $bar2, " Unpacked correctly by supplying foo => $$"); + eval { Bar->unpack( $bpack ) }; + ok( $@, " Unpack without required attribute fails" ); + like( $@, qr/foo/, " Proper error recorded" ); + + my $bar2 = Bar->unpack( $bpack, inject => { foo => bless {} } ); + ok( $bar2, " Unpacked correctly with foo => Object"); }