fix "use MyExporter -traits => ..." (RT77974)
[gitmo/Moose.git] / t / roles / apply_role.t
index 05722b0..2f8d07f 100644 (file)
@@ -63,6 +63,11 @@ use Test::Fatal;
     with 'FooRole', 'BarRole';
 }
 
+{
+    package PlainJane;
+    sub new { return bless {}, __PACKAGE__; }
+}
+
 my $foo_class_meta = FooClass->meta;
 isa_ok( $foo_class_meta, 'Moose::Meta::Class' );
 
@@ -183,4 +188,42 @@ foreach my $foo ( $foo, $foobar ) {
     is( $foo->bar, $foo2, '... got the right value for bar now' );
 }
 
+{
+    {
+        package MRole;
+        use Moose::Role;
+        sub meth { }
+    }
+
+    {
+        package MRole2;
+        use Moose::Role;
+        sub meth2 { }
+    }
+
+    {
+        use Moose::Meta::Class;
+        use Moose::Object;
+        use Moose::Util qw(apply_all_roles);
+
+        my $class = Moose::Meta::Class->create( 'Class' => (
+          superclasses => [ 'Moose::Object' ],
+        ));
+
+        apply_all_roles($class, MRole->meta, MRole2->meta);
+
+        ok(Class->can('meth'), "can meth");
+        ok(Class->can('meth2'), "can meth2");
+    }
+}
+
+{
+    ok(!Moose::Util::find_meta('PlainJane'), 'not initialized');
+    Moose::Util::apply_all_roles('PlainJane', 'BarRole');
+    ok(Moose::Util::find_meta('PlainJane'), 'initialized');
+    ok(Moose::Util::find_meta('PlainJane')->does_role('BarRole'), 'does BarRole');
+    my $pj = PlainJane->new();
+    ok($pj->can('woot'), 'can woot');
+}
+
 done_testing;