Commit | Line | Data |
77b2b6f2 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
a28e50e4 |
6 | use Test::More; |
77b2b6f2 |
7 | |
8 | { |
9 | package Baz; |
10 | use Moose; |
11 | use Moose::Util::TypeConstraints; |
d03bd989 |
12 | |
77b2b6f2 |
13 | coerce 'Baz' => from 'HashRef' => via { Baz->new($_) }; |
d03bd989 |
14 | |
77b2b6f2 |
15 | has 'hello' => ( |
16 | is => 'ro', |
d03bd989 |
17 | isa => 'Str', |
77b2b6f2 |
18 | ); |
d03bd989 |
19 | |
77b2b6f2 |
20 | package Bar; |
21 | use Moose; |
22 | use Moose::Util::TypeConstraints; |
d03bd989 |
23 | |
77b2b6f2 |
24 | coerce 'Bar' => from 'HashRef' => via { Bar->new($_) }; |
d03bd989 |
25 | |
77b2b6f2 |
26 | has 'baz' => ( |
27 | is => 'ro', |
d03bd989 |
28 | isa => 'Baz', |
77b2b6f2 |
29 | coerce => 1 |
30 | ); |
d03bd989 |
31 | |
77b2b6f2 |
32 | package Foo; |
33 | use Moose; |
d03bd989 |
34 | |
77b2b6f2 |
35 | has 'bar' => ( |
36 | is => 'ro', |
d03bd989 |
37 | isa => 'Bar', |
77b2b6f2 |
38 | coerce => 1, |
39 | ); |
40 | } |
41 | |
42 | my $foo = Foo->new(bar => { baz => { hello => 'World' } }); |
43 | isa_ok($foo, 'Foo'); |
44 | isa_ok($foo->bar, 'Bar'); |
45 | isa_ok($foo->bar->baz, 'Baz'); |
46 | is($foo->bar->baz->hello, 'World', '... this all worked fine'); |
47 | |
a28e50e4 |
48 | done_testing; |