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