new test
Stevan Little [Mon, 23 Feb 2009 19:58:00 +0000 (19:58 +0000)]
t/020_attributes/025_chained_coercion.t [new file with mode: 0644]

diff --git a/t/020_attributes/025_chained_coercion.t b/t/020_attributes/025_chained_coercion.t
new file mode 100644 (file)
index 0000000..108a174
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+use Test::Exception;
+
+{
+    package Baz;
+    use Moose;
+    use Moose::Util::TypeConstraints;
+    
+    coerce 'Baz' => from 'HashRef' => via { Baz->new($_) };
+    
+    has 'hello' => (
+        is      => 'ro',
+        isa     => 'Str',   
+    );
+    
+    package Bar;
+    use Moose;
+    use Moose::Util::TypeConstraints;
+    
+    coerce 'Bar' => from 'HashRef' => via { Bar->new($_) };
+    
+    has 'baz' => (
+        is      => 'ro',
+        isa     => 'Baz',   
+        coerce  => 1
+    );
+    
+    package Foo;
+    use Moose;
+    
+    has 'bar' => (
+        is      => 'ro',
+        isa     => 'Bar',   
+        coerce  => 1,
+    );
+}
+
+my $foo = Foo->new(bar => { baz => { hello => 'World' } });
+isa_ok($foo, 'Foo');
+isa_ok($foo->bar, 'Bar');
+isa_ok($foo->bar->baz, 'Baz');
+is($foo->bar->baz->hello, 'World', '... this all worked fine');
+
+