convert all uses of Test::Exception to Test::Fatal.
[gitmo/MooseX-Storage.git] / t / 008_do_not_serialize.t
index adc8e14..200e90b 100644 (file)
@@ -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"); 
 }