Explicitly return the DOES coderef if we install it
[gitmo/Role-Tiny.git] / t / modifiers.t
index 8a3e1f1..6d90efb 100644 (file)
@@ -4,8 +4,8 @@ use Test::More;
 use Test::Fatal;
 
 BEGIN {
-  plan skip_all => "Class::Method::Modifiers not installed"
-    unless eval "use Class::Method::Modifiers; 1";
+  plan skip_all => "Class::Method::Modifiers not installed or too old"
+    unless eval "use Class::Method::Modifiers 1.05; 1";
 }
 
 BEGIN {
@@ -45,6 +45,19 @@ BEGIN {
   around 'broken modifier' => sub { my $orig = shift; $orig->(@_) };
 }
 
+BEGIN {
+  package MyRole2;
+  use Role::Tiny;
+  with 'MyRole';
+}
+
+BEGIN {
+  package ExtraClass2;
+  use Role::Tiny::With;
+  with 'MyRole2';
+  sub foo { 'class foo' }
+}
+
 sub try_apply_to {
   my $to = shift;
   exception { Role::Tiny->apply_role_to_package($to, 'MyRole') }
@@ -54,6 +67,9 @@ is(try_apply_to('MyClass'), undef, 'role applies cleanly');
 is(MyClass->foo, 'role foo class foo', 'method modifier');
 is(ExtraClass->foo, 'role foo class foo', 'method modifier with composition');
 
+is(ExtraClass2->foo, 'role foo class foo',
+  'method modifier with role composed into role');
+
 ok(exception {
     my $new_class = Role::Tiny->create_class_with_roles('MyClass', 'BrokenRole');
 }, 'exception caught creating class with broken modifier in a role');