Commit | Line | Data |
7a1781ae |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
53f38c53 |
6 | use Test::More skip_all => '[TODO] a Mouse class cannot extends a Moose class'; |
7a1781ae |
7 | |
8 | use Mouse::Spec; |
9 | BEGIN { |
10 | eval{ require Moose && Moose->VERSION(Mouse::Spec->MooseVersion) }; |
11 | plan skip_all => "Moose $Mouse::Spec::MooseVersion required for this test" if $@; |
12 | plan tests => 5; |
13 | } |
14 | |
15 | use Test::Exception; |
16 | |
17 | { |
18 | package Headers; |
19 | use Mouse; |
20 | has 'foo' => ( is => 'rw' ); |
21 | } |
22 | { |
23 | package Response; |
24 | use Mouse; |
25 | use Mouse::Util::TypeConstraints; |
26 | |
27 | type 'HeadersType' => where { defined $_ && eval { $_->isa('Headers') } }; |
28 | coerce 'HeadersType' => |
29 | from 'HashRef' => via { |
30 | Headers->new(%{ $_ }); |
31 | }, |
32 | ; |
33 | |
34 | has headers => ( |
35 | is => 'rw', |
36 | isa => 'HeadersType', |
37 | coerce => 1, |
38 | ); |
39 | } |
40 | { |
41 | package Mosponse; |
42 | use Moose; |
43 | extends qw(Response); |
44 | ::lives_ok { extends qw(Response) } "extend Mouse class with Moose"; |
45 | } |
46 | |
47 | { |
48 | my $r = Mosponse->new(headers => { foo => 'bar' }); |
49 | isa_ok($r->headers, 'Headers'); |
50 | lives_and { |
51 | is $r->headers->foo, 'bar'; |
52 | }; |
53 | } |
54 | |
55 | { |
56 | my $r = Mosponse->new; |
57 | $r->headers({foo => 'yay'}); |
58 | isa_ok($r->headers, 'Headers'); |
59 | is($r->headers->foo, 'yay'); |
60 | } |