X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F030_roles%2F020_role_composite.t;h=506968e6ca2ee054aac33f0a558618f1f551939e;hb=ded5f6962c261c7ef7d135d2fb994ac341c56fbf;hp=38e8307b526ff3f9e4d518076898ec048cca1ec8;hpb=fb1e11d526a7d3608132ba484525980e9fafcc4f;p=gitmo%2FMoose.git diff --git a/t/030_roles/020_role_composite.t b/t/030_roles/020_role_composite.t index 38e8307..506968e 100644 --- a/t/030_roles/020_role_composite.t +++ b/t/030_roles/020_role_composite.t @@ -3,14 +3,11 @@ use strict; use warnings; -use Test::More no_plan => 1; +use Test::More tests => 14; use Test::Exception; -BEGIN { - use_ok('Moose'); - use_ok('Moose::Meta::Role::Application::RoleSummation'); - use_ok('Moose::Meta::Role::Composite'); -} +use Moose::Meta::Role::Application::RoleSummation; +use Moose::Meta::Role::Composite; { package Role::Foo; @@ -20,7 +17,10 @@ BEGIN { use Moose::Role; package Role::Baz; - use Moose::Role; + use Moose::Role; + + package Role::Gorch; + use Moose::Role; } { @@ -41,7 +41,40 @@ BEGIN { Role::Baz->meta, ], '... got the right roles'); + ok($c->does_role($_), '... our composite does the role ' . $_) + for qw( + Role::Foo + Role::Bar + Role::Baz + ); + lives_ok { Moose::Meta::Role::Application::RoleSummation->new->apply($c); - } '... this composed okay'; + } '... this composed okay'; + + ##... now nest 'em + { + my $c2 = Moose::Meta::Role::Composite->new( + roles => [ + $c, + Role::Gorch->meta, + ] + ); + isa_ok($c2, 'Moose::Meta::Role::Composite'); + + is($c2->name, 'Role::Foo|Role::Bar|Role::Baz|Role::Gorch', '... got the composite role name'); + + is_deeply($c2->get_roles, [ + $c, + Role::Gorch->meta, + ], '... got the right roles'); + + ok($c2->does_role($_), '... our composite does the role ' . $_) + for qw( + Role::Foo + Role::Bar + Role::Baz + Role::Gorch + ); + } }