die on attributes with no methods and no is => 'bare'
[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         is => 'bare',
29     );
30 }
31
32 {
33     package My::Other::Class;
34     use Moose;
35
36     has foo => (
37         traits => [
38             'My::Attribute::Trait' => {
39                 alias => {
40                     reversed_name => 'reversed',
41                 },
42             },
43         ],
44         is => 'bare',
45     );
46 }
47
48 my $attr = My::Class->meta->get_attribute('foo');
49 is($attr->eman, 'oof', 'the aliased method is in the attribute');
50 ok(!$attr->can('reversed'), "the method was not installed under the other class' alias");
51
52 my $other_attr = My::Other::Class->meta->get_attribute('foo');
53 is($other_attr->reversed, 'oof', 'the aliased method is in the attribute');
54 ok(!$other_attr->can('enam'), "the method was not installed under the other class' alias");
55