Redid conversion to Test::Fatal
[gitmo/Moose.git] / t / 030_roles / 025_role_composition_override.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 override foo => sub { 'Role::Foo::foo' };
d03bd989 17
fb1e11d5 18 package Role::Bar;
19 use Moose::Role;
20
21 override bar => sub { 'Role::Bar::bar' };
d03bd989 22
fb1e11d5 23 package Role::FooConflict;
d03bd989 24 use Moose::Role;
25
fb1e11d5 26 override foo => sub { 'Role::FooConflict::foo' };
d03bd989 27
fb1e11d5 28 package Role::FooMethodConflict;
d03bd989 29 use Moose::Role;
30
31 sub foo { 'Role::FooConflict::foo' }
32
fb1e11d5 33 package Role::BarMethodConflict;
34 use Moose::Role;
d03bd989 35
fb1e11d5 36 sub bar { 'Role::BarConflict::bar' }
37}
38
39# test simple overrides
40{
41 my $c = Moose::Meta::Role::Composite->new(
42 roles => [
43 Role::Foo->meta,
44 Role::Bar->meta,
45 ]
46 );
47 isa_ok($c, 'Moose::Meta::Role::Composite');
48
d03bd989 49 is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name');
50
b10dde3a 51 is( exception {
fb1e11d5 52 Moose::Meta::Role::Application::RoleSummation->new->apply($c);
b10dde3a 53 }, undef, '... this lives ok' );
d03bd989 54
fb1e11d5 55 is_deeply(
56 [ sort $c->get_method_modifier_list('override') ],
57 [ 'bar', 'foo' ],
58 '... got the right list of methods'
59 );
60}
61
62# test simple overrides w/ conflicts
b10dde3a 63isnt( exception {
fb1e11d5 64 Moose::Meta::Role::Application::RoleSummation->new->apply(
65 Moose::Meta::Role::Composite->new(
66 roles => [
67 Role::Foo->meta,
68 Role::FooConflict->meta,
69 ]
70 )
71 );
b10dde3a 72}, undef, '... this fails as expected' );
fb1e11d5 73
74# test simple overrides w/ conflicts
b10dde3a 75isnt( exception {
fb1e11d5 76 Moose::Meta::Role::Application::RoleSummation->new->apply(
d03bd989 77 Moose::Meta::Role::Composite->new(
fb1e11d5 78 roles => [
79 Role::Foo->meta,
80 Role::FooMethodConflict->meta,
81 ]
82 )
83 );
b10dde3a 84}, undef, '... this fails as expected' );
fb1e11d5 85
86
87# test simple overrides w/ conflicts
b10dde3a 88isnt( exception {
fb1e11d5 89 Moose::Meta::Role::Application::RoleSummation->new->apply(
90 Moose::Meta::Role::Composite->new(
91 roles => [
92 Role::Foo->meta,
d03bd989 93 Role::Bar->meta,
94 Role::FooConflict->meta,
fb1e11d5 95 ]
96 )
97 );
b10dde3a 98}, undef, '... this fails as expected' );
fb1e11d5 99
100
101# test simple overrides w/ conflicts
b10dde3a 102isnt( exception {
fb1e11d5 103 Moose::Meta::Role::Application::RoleSummation->new->apply(
d03bd989 104 Moose::Meta::Role::Composite->new(
fb1e11d5 105 roles => [
106 Role::Foo->meta,
d03bd989 107 Role::Bar->meta,
108 Role::FooMethodConflict->meta,
fb1e11d5 109 ]
110 )
111 );
b10dde3a 112}, undef, '... this fails as expected' );
a28e50e4 113
114done_testing;