trAvis - MANAGER
Edit File: 501_moose_coerce_mouse.t
#!/usr/bin/perl use strict; use warnings; use Test::More skip_all => '[TODO] a Mouse class cannot extends a Moose class'; use Mouse::Spec; BEGIN { eval{ require Moose && Moose->VERSION(Mouse::Spec->MooseVersion) }; plan skip_all => "Moose $Mouse::Spec::MooseVersion required for this test" if $@; plan tests => 5; } use Test::Exception; { package Headers; use Mouse; has 'foo' => ( is => 'rw' ); } { package Response; use Mouse; use Mouse::Util::TypeConstraints; type 'HeadersType' => where { defined $_ && eval { $_->isa('Headers') } }; coerce 'HeadersType' => from 'HashRef' => via { Headers->new(%{ $_ }); }, ; has headers => ( is => 'rw', isa => 'HeadersType', coerce => 1, ); } { package Mosponse; use Moose; extends qw(Response); ::lives_ok { extends qw(Response) } "extend Mouse class with Moose"; } { my $r = Mosponse->new(headers => { foo => 'bar' }); isa_ok($r->headers, 'Headers'); lives_and { is $r->headers->foo, 'bar'; }; } { my $r = Mosponse->new; $r->headers({foo => 'yay'}); isa_ok($r->headers, 'Headers'); is($r->headers->foo, 'yay'); }