Make sure we can use all of the keywords outside of the role block, and that they...
[gitmo/MooseX-Role-Parameterized.git] / t / 015-compose-keywords.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 20;
5
6 do {
7     package OtherRole;
8     use Moose::Role;
9 };
10
11 do {
12     package MyRole;
13     use MooseX::Role::Parameterized;
14
15     requires 'requirement';
16     excludes 'exclusion';
17
18     has attribute => ();
19
20     method meth => sub {};
21     before meth => sub {};
22     after  meth => sub {};
23     around meth => sub {};
24
25     sub regular_method {}
26
27     override other_meth => sub { super };
28
29     with 'OtherRole';
30
31     role { }
32 };
33
34 for my $meta (MyRole->meta, MyRole->meta->generate_role) {
35     ok($meta->has_attribute('attribute'), 'has');
36     ok($meta->has_method('meth'), 'method');
37     ok($meta->has_method('regular_method'), 'sub');
38
39     is($meta->has_before_method_modifiers('meth'), 1, 'before');
40     is($meta->has_after_method_modifiers('meth'),  1, 'after');
41     is($meta->has_around_method_modifiers('meth'), 1, 'around');
42
43     is($meta->has_override_method_modifier('other_meth'), 1, 'override');
44     is($meta->does_role('OtherRole'), 1, 'with');
45
46     ok($meta->requires_method('requirement'), 'requires');
47     ok($meta->excludes_role('exclusion'), 'excludes');
48 }
49