use strict;
use warnings;
-use Test::More tests => 36;
+use Test::More tests => 39;
use Test::Exception;
BEGIN {
{
package FooRole;
- use strict;
- use warnings;
use Moose::Role;
has 'bar' => (is => 'rw', isa => 'FooClass');
'FooRole::blau -> ' . $c->();
};
+}{
package BarClass;
- use strict;
- use warnings;
use Moose;
sub boo { 'BarClass::boo' }
sub foo { 'BarClass::foo' } # << the role overrides this ...
+
+ __PACKAGE__->meta->make_immutable(debug => 0);
+}{
package FooClass;
- use strict;
- use warnings;
use Moose;
extends 'BarClass';
sub blau { 'FooClass::blau' }
sub goo { 'FooClass::goo' } # << overrides the one from the role ...
+
+ __PACKAGE__->meta->make_immutable(debug => 0);
}
my $foo_class_meta = FooClass->meta;
isa_ok($foo_class_meta, 'Moose::Meta::Class');
+dies_ok {
+ $foo_class_meta->does_role()
+} '... does_role requires a role name';
+
+dies_ok {
+ $foo_class_meta->apply_role()
+} '... apply_role requires a role';
+
+dies_ok {
+ $foo_class_meta->apply_role(bless({} => 'Fail'))
+} '... apply_role requires a role';
+
ok($foo_class_meta->does_role('FooRole'), '... the FooClass->meta does_role FooRole');
ok(!$foo_class_meta->does_role('OtherRole'), '... the FooClass->meta !does_role OtherRole');