the repository now lives at https://github.com/moose/MooseX-ClassAttributes
[gitmo/MooseX-ClassAttribute.git] / t / 07-parameterized-role.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Fatal;
6
7 use Test::Requires {
8     'MooseX::Role::Parameterized' => '0',
9 };
10
11 plan skip_all =>
12     'This test will not pass without changes to MooseX::Role::Parmeterized';
13
14 {
15     package Role;
16
17     use MooseX::Role::Parameterized;
18     use MooseX::ClassAttribute;
19
20     parameter foo => ( is => 'rw' );
21
22     role {
23         my $p = shift;
24
25         class_has $p => ( is => 'rw' );
26     };
27 }
28
29 {
30     package Class;
31
32     use Moose;
33
34     with 'Role' => { foo => 'foo' };
35 }
36
37 my $instance = Class->new();
38 isa_ok( $instance, 'Class' );
39
40 is(
41     exception {
42         $instance->foo('bar');
43         is( $instance->foo(), 'bar' );
44     },
45     undef,
46     'used class attribute from parameterized role'
47 );
48
49 done_testing();