More role composition tests
[gitmo/MooseX-ClassAttribute.git] / t / 08-role-composition.t
CommitLineData
f2aa2fe5 1use strict;
2use warnings;
3272340d 3
87e80a25 4use Test::More;
f2aa2fe5 5
87e80a25 6{
7 package Role;
f2aa2fe5 8
87e80a25 9 use Moose::Role;
10 use MooseX::ClassAttribute;
f2aa2fe5 11
87e80a25 12 class_has 'CA' => (
13 is => 'ro',
14 isa => 'HashRef',
15 default => sub { {} },
16 );
17}
f2aa2fe5 18
87e80a25 19{
20 package Role2;
21 use Moose::Role;
22}
f2aa2fe5 23
87e80a25 24{
25 package Bar;
26 use Moose;
f2aa2fe5 27
5a7bfdcc 28 with 'Role2', 'Role';
87e80a25 29}
f2aa2fe5 30
289b3466 31ok(
32 Bar->can('CA'),
33 'Class attributes are preserved during role composition'
34);
87e80a25 35
5a7bfdcc 36{
37 package Role3;
38 use Moose::Role;
39 with 'Role';
40}
41
42{
43 package Baz;
44 use Moose;
45
46 with 'Role3';
47}
48
49ok(
50 Baz->can('CA'),
51 'Class attributes are preserved when role is applied to another role'
52);
53
56a8f20e 54{
55 package Role4;
56 use Moose::Role;
57
58 use MooseX::ClassAttribute;
59
60 class_has 'CA2' => (
61 is => 'ro',
62 isa => 'HashRef',
63 default => sub { {} },
64 );
65}
66
67{
68 package Buz;
69 use Moose;
70
71 with 'Role', 'Role4';
72}
73
74ok(
75 Buz->can('CA'),
76 'Class attributes are merged from two roles (CA)'
77);
78
79ok(
80 Buz->can('CA2'),
81 'Class attributes are merged from two roles (CA2)'
82);
83
84{
85 package Role5;
86 use Moose::Role;
87 with 'Role', 'Role4';
88}
89
90{
91 package Quux;
92 use Moose;
93
94 with 'Role5';
95}
96
97ok(
98 Quux->can('CA'),
99 'Class attributes are merged from two roles (CA)'
100);
101
102ok(
103 Quux->can('CA2'),
104 'Class attributes are merged from two roles (CA2)'
105);
106
87e80a25 107done_testing();