Failing test for role metaobjects knowing their parameters
[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 => 8;
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         method birthday => sub {
28             my $self = shift;
29             return 2000 - $self->age;
30         };
31     };
32 };
33
34 ok(MyPerson->meta->has_role_generator, "MyPerson has a role generator");
35
36 my $role = MyPerson->meta->generate_role(
37     default_age => 7,
38 );
39
40 isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role');
41
42 is($role->parameters, $parameters, 'the generated role knows its parameters');
43
44 is($parameters->default_age, 7);
45 is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on");
46
47 my $age_attr = $role->get_attribute('age');
48 is($age_attr->{default}, 7, "role's age attribute has the right default");
49
50 my $birthday_method = $role->get_method('birthday');
51 is($birthday_method->name, 'birthday', "method name");
52 is($birthday_method->package_name, $role->name, "package name");