Redid conversion to Test::Fatal
[gitmo/Moose.git] / t / 030_roles / 020_role_composite.t
CommitLineData
fb1e11d5 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
b10dde3a 7use Test::Fatal;
fb1e11d5 8
7ff56534 9use Moose::Meta::Role::Application::RoleSummation;
10use Moose::Meta::Role::Composite;
fb1e11d5 11
12{
13 package Role::Foo;
14 use Moose::Role;
d03bd989 15
fb1e11d5 16 package Role::Bar;
17 use Moose::Role;
18
19 package Role::Baz;
d03bd989 20 use Moose::Role;
21
3e19778d 22 package Role::Gorch;
d03bd989 23 use Moose::Role;
fb1e11d5 24}
25
26{
27 my $c = Moose::Meta::Role::Composite->new(
28 roles => [
29 Role::Foo->meta,
30 Role::Bar->meta,
d03bd989 31 Role::Baz->meta,
fb1e11d5 32 ]
33 );
34 isa_ok($c, 'Moose::Meta::Role::Composite');
35
36 is($c->name, 'Role::Foo|Role::Bar|Role::Baz', '... got the composite role name');
37
38 is_deeply($c->get_roles, [
39 Role::Foo->meta,
40 Role::Bar->meta,
d03bd989 41 Role::Baz->meta,
fb1e11d5 42 ], '... got the right roles');
d03bd989 43
c4538447 44 ok($c->does_role($_), '... our composite does the role ' . $_)
45 for qw(
46 Role::Foo
47 Role::Bar
d03bd989 48 Role::Baz
c4538447 49 );
d03bd989 50
b10dde3a 51 is( exception {
fb1e11d5 52 Moose::Meta::Role::Application::RoleSummation->new->apply($c);
b10dde3a 53 }, undef, '... this composed okay' );
d03bd989 54
3e19778d 55 ##... now nest 'em
d03bd989 56 {
3e19778d 57 my $c2 = Moose::Meta::Role::Composite->new(
58 roles => [
59 $c,
60 Role::Gorch->meta,
61 ]
62 );
63 isa_ok($c2, 'Moose::Meta::Role::Composite');
64
65 is($c2->name, 'Role::Foo|Role::Bar|Role::Baz|Role::Gorch', '... got the composite role name');
66
67 is_deeply($c2->get_roles, [
68 $c,
d03bd989 69 Role::Gorch->meta,
3e19778d 70 ], '... got the right roles');
71
72 ok($c2->does_role($_), '... our composite does the role ' . $_)
73 for qw(
74 Role::Foo
75 Role::Bar
d03bd989 76 Role::Baz
77 Role::Gorch
78 );
3e19778d 79 }
fb1e11d5 80}
a28e50e4 81
82done_testing;