additional tests for applying multiple roles
Graham Knop [Thu, 11 Jul 2013 06:48:17 +0000 (02:48 -0400)]
t/compose-roles.t
xt/moo-does-moose-role.t

index ead1f11..162f710 100644 (file)
@@ -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;
index 8872971..8811bfd 100644 (file)
@@ -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;