d8818455932031cf1572aa174ca32acac3e17f70
[gitmo/MooseX-ClassAttribute.git] / t / 10-multiple-role-composition.t
1
2 # Reported as https://rt.cpan.org/Public/Bug/Display.html?id=59610
3
4 {
5     package Role1;
6     use Moose::Role;
7
8     # I do nothing!
9 }
10 {
11     package Role2;
12
13     use Moose::Role;
14     use MooseX::ClassAttribute;
15
16     # I also do nothing, except use MX:CA
17 }
18
19 {
20     package Foo;
21     use strict; use warnings;
22     use Moose;
23     with 'Role1';
24     with 'Role2';
25 }
26
27 {
28     package Bar;
29     use strict; use warnings;
30     use Moose;
31     with 'Role2';
32     with 'Role1';
33 }
34
35 {
36     package Baz;
37     use strict; use warnings;
38     use Moose;
39     with 'Role1', 'Role2';
40 }
41
42 {
43     package Quux;
44     use strict; use warnings;
45     use Moose;
46     with 'Role2', 'Role1';
47 }
48
49 # in this example, all roles actually disappear if the second one uses MX:CA!
50
51 package main;
52
53 use Test::More tests => 5;
54 use Test::NoWarnings;
55 use Test::Deep;
56 local $TODO = 'Class attributes are lost during role composition';
57 foreach my $class (qw(Foo Bar Baz Quux))
58 {
59     cmp_deeply(
60         [ map { $_->name} $class->meta->calculate_all_roles ],
61         superbagof(qw(Role1 Role2)),
62         'Both roles are consumed by class ' . $class,
63     );
64 }
65