1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
use strict;
use warnings;
use Test::More 0.88;
BEGIN {
require Moose;
if (Moose->VERSION < 1.9900) {
plan skip_all => q{this test isn't relevant on Moose 1.x};
}
}
{
package Foo::Meta::Role::Attribute;
use Moose::Role;
has foo => (is => 'ro');
}
{
package Foo::Exporter;
use Moose::Exporter;
Moose::Exporter->setup_import_methods(
role_metaroles => {
applied_attribute => ['Foo::Meta::Role::Attribute'],
},
);
}
{
package Foo::Role1;
use MooseX::Role::Parameterized;
role {
my $p = shift;
my %args = @_;
Foo::Exporter->import({into => $args{operating_on}->name});
has foo => (is => 'ro', foo => 'bar');
};
}
{
package Foo1;
use Moose;
with 'Foo::Role1';
}
{
is(
Foo1->meta->find_attribute_by_name('foo')->foo, 'bar',
'applied_attribute metaroles work when applied to generated role'
);
}
{
package Foo::Role2;
use MooseX::Role::Parameterized;
Foo::Exporter->import;
has foo => (is => 'ro', foo => 'bar');
role {
my $p = shift;
has bar => (is => 'ro');
};
}
{
package Foo2;
use Moose;
with 'Foo::Role2';
}
{
is(Foo2->meta->find_attribute_by_name('foo')->foo, 'bar',
'applied_attribute metaroles work when applied to parameterizable role');
}
{
package Foo::Role3;
use MooseX::Role::Parameterized;
has foo => (is => 'ro', foo => 'bar');
role {
my $p = shift;
has bar => (is => 'ro');
};
Foo::Exporter->import;
}
{
package Foo3;
use Moose;
with 'Foo::Role3';
}
{
is(Foo3->meta->find_attribute_by_name('foo')->foo, 'bar',
'applied_attribute metaroles work when applied to parameterizable role after the role block has been defined');
}
done_testing;
|