e4178806ca39bdb02f78a3096f657cb981a72068
[gitmo/MooseX-Role-Parameterized.git] / t / 002-role-block.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 5;
5 use Test::Exception;
6
7 my ($parameters, %args);
8
9 do {
10     package MyPerson;
11     use MooseX::Role::Parameterized;
12
13     parameter default_age => (
14         is       => 'rw',
15         isa      => 'Int',
16         required => 1,
17     );
18
19     role {
20         ($parameters, %args) = @_;
21
22         has age => (
23             is      => 'ro',
24             default => $parameters->default_age,
25         );
26     };
27 };
28
29 ok(MyPerson->meta->has_role_generator, "MyPerson has a role generator");
30
31 my $role = MyPerson->meta->generate_role(
32     default_age => 7,
33 );
34
35 isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role');
36
37 is($parameters->default_age, 7);
38 is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on");
39
40 my $age_attr = $role->get_attribute('age');
41 is($age_attr->{default}, 7, "role's age attribute has the right default");
42