test array delegation edge cases
[gitmo/Moose.git] / t / 030_roles / 003_apply_role.t
index de35519..e58c0e2 100644 (file)
@@ -3,13 +3,15 @@
 use strict;
 use warnings;
 
-use Test::More tests => 86;
+use Test::More;
 use Test::Exception;
 
 {
     package FooRole;
     use Moose::Role;
 
+    our $VERSION = 23;
+
     has 'bar' => ( is => 'rw', isa => 'FooClass' );
     has 'baz' => ( is => 'ro' );
 
@@ -36,8 +38,6 @@ use Test::Exception;
 
     sub boo {'BarClass::boo'}
     sub foo {'BarClass::foo'}    # << the role overrides this ...
-
-    __PACKAGE__->meta->make_immutable( debug => 0 );
 }
 
 {
@@ -45,13 +45,17 @@ use Test::Exception;
     use Moose;
 
     extends 'BarClass';
-    with 'FooRole';
+
+    ::throws_ok { with 'FooRole' => { -version => 42 } }
+        qr/FooRole version 42 required--this is only version 23/,
+        'applying role with unsatisfied version requirement';
+
+    ::lives_ok { with 'FooRole' => { -version => 13 } }
+        'applying role with satisfied version requirement';
 
     sub blau {'FooClass::blau'}    # << the role wraps this ...
 
     sub goo {'FooClass::goo'}      # << overrides the one from the role ...
-
-    __PACKAGE__->meta->make_immutable( debug => 0 );
 }
 
 {
@@ -74,12 +78,12 @@ dies_ok {
 '... does_role requires a role name';
 
 dies_ok {
-    $foo_class_meta->apply_role();
+    $foo_class_meta->add_role();
 }
 '... apply_role requires a role';
 
 dies_ok {
-    $foo_class_meta->apply_role( bless( {} => 'Fail' ) );
+    $foo_class_meta->add_role( bless( {} => 'Fail' ) );
 }
 '... apply_role requires a role';
 
@@ -187,3 +191,5 @@ foreach my $foo ( $foo, $foobar ) {
 
     is( $foo->bar, $foo2, '... got the right value for bar now' );
 }
+
+done_testing;