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');
metaclass => 'DoNotSerialize',
required => 1,
is => 'rw',
+ isa => 'Object', # type constraint is important
);
has zot => (
);
}
-{ 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;
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");
}