From: Graham Knop Date: Thu, 11 Jul 2013 06:48:17 +0000 (-0400) Subject: additional tests for applying multiple roles X-Git-Tag: v1.003000~15 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMoo.git;a=commitdiff_plain;h=75967522341e1ce85f0dcbcfe65d91a1222e0a7a additional tests for applying multiple roles --- diff --git a/t/compose-roles.t b/t/compose-roles.t index ead1f11..162f710 100644 --- a/t/compose-roles.t +++ b/t/compose-roles.t @@ -1,5 +1,6 @@ use strictures 1; use Test::More; +use Test::Fatal; { package One; use Role::Tiny; @@ -62,4 +63,33 @@ my $o2 = Moo::Role->create_class_with_roles( is($o2->attr3, -3, 'constructor includes base class'); is($o2->attr2, -2, 'constructor includes role'); +{ + package AccessorExtension; + use Moo::Role; + around 'generate_method' => sub { + my $orig = shift; + my $me = shift; + my ($into, $name) = @_; + $me->$orig(@_); + no strict 'refs'; + *{"${into}::_${name}_marker"} = sub { }; + }; +} + +{ + package RoleWithReq; + use Moo::Role; + requires '_attr1_marker'; +} + +is exception { + package EmptyClass; + use Moo; + Moo::Role->apply_roles_to_object( + Moo->_accessor_maker_for(__PACKAGE__), + 'AccessorExtension'); + + with qw(RoleWithAttr RoleWithReq); +}, undef, 'apply_roles_to_object correctly calls accessor generator'; + done_testing; diff --git a/xt/moo-does-moose-role.t b/xt/moo-does-moose-role.t index 8872971..8811bfd 100644 --- a/xt/moo-does-moose-role.t +++ b/xt/moo-does-moose-role.t @@ -1,5 +1,6 @@ use strictures 1; use Test::More; +use Test::Fatal; BEGIN { package Ker; @@ -263,4 +264,20 @@ is( UsingMooseTrait->meta->find_attribute_by_name('one') 'one', 'trait attributes maintain values'); +{ + package NeedTrap; + use Moo::Role; + + requires 'trap'; +} + +is exception { + package Splattrap; + use Moo; + sub monkey {} + + with qw(Splat NeedTrap); +}, undef, 'requires satisfied by Moose attribute composed at the same time'; + + done_testing;