Merge branch 'master' into method_generation_cleanup
[gitmo/Moose.git] / t / 020_attributes / 024_attribute_traits_parameterized.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 4;
5
6 {
7     package My::Attribute::Trait;
8     use Moose::Role;
9
10     sub reversed_name {
11         my $self = shift;
12         scalar reverse $self->name;
13     }
14 }
15
16 {
17     package My::Class;
18     use Moose;
19
20     has foo => (
21         traits => [
22             'My::Attribute::Trait' => {
23                 alias => {
24                     reversed_name => 'eman',
25                 },
26             },
27         ],
28     );
29 }
30
31 {
32     package My::Other::Class;
33     use Moose;
34
35     has foo => (
36         traits => [
37             'My::Attribute::Trait' => {
38                 alias => {
39                     reversed_name => 'reversed',
40                 },
41             },
42         ],
43     );
44 }
45
46 my $attr = My::Class->meta->get_attribute('foo');
47 is($attr->eman, 'oof', 'the aliased method is in the attribute');
48 ok(!$attr->can('reversed'), "the method was not installed under the other class' alias");
49
50 my $other_attr = My::Other::Class->meta->get_attribute('foo');
51 is($other_attr->reversed, 'oof', 'the aliased method is in the attribute');
52 ok(!$other_attr->can('enam'), "the method was not installed under the other class' alias");
53