Commit | Line | Data |
ec4d7259 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
d5c890a4 |
4 | use FindBin; |
5 | use lib "$FindBin::Bin/lib"; |
6 | |
ec4d7259 |
7 | BEGIN { |
c527a435 |
8 | package RoleTest1; |
9 | use Moose::Role; |
cbe627b9 |
10 | |
c527a435 |
11 | sub aaa { 'aaa' } |
cbe627b9 |
12 | |
c527a435 |
13 | $INC{'RoleTest1.pm'} = __FILE__; |
cbe627b9 |
14 | |
c527a435 |
15 | package RoleTest2; |
16 | use Moose::Role; |
cbe627b9 |
17 | |
c527a435 |
18 | sub bbb { 'bbb' } |
cbe627b9 |
19 | |
c527a435 |
20 | $INC{'RoleTest2.pm'} = __FILE__; |
cbe627b9 |
21 | |
c527a435 |
22 | package Model::Banana; |
23 | use base qw/Catalyst::Model/; |
cbe627b9 |
24 | |
c527a435 |
25 | $INC{'Model/Banana.pm'} = __FILE__; |
cbe627b9 |
26 | |
c527a435 |
27 | package Model::BananaMoose; |
cbe627b9 |
28 | |
c527a435 |
29 | use Moose; |
30 | extends 'Catalyst::Model'; |
31 | |
32 | Model::BananaMoose->meta->make_immutable; |
33 | $INC{'Model/BananaMoose.pm'} = __FILE__; |
34 | } |
35 | |
36 | { |
37 | package TestCatalyst; |
38 | $INC{'TestCatalyst.pm'} = __FILE__; |
39 | |
40 | use Moose; |
41 | use Catalyst; |
42 | use Catalyst::Utils; |
43 | |
44 | after 'setup_components' => sub { |
45 | my $self = shift; |
46 | Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Model::Banana' ); |
47 | Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Test::Apple' ); |
48 | Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Model::Banana', as => 'Cherry' ); |
49 | Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Model::BananaMoose', as => 'CherryMoose', traits => ['RoleTest1', 'RoleTest2'] ); |
50 | Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Test::Apple', as => 'Apple' ); |
51 | Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Test::Apple', as => 'Apple2', traits => ['RoleTest1', 'RoleTest2'] ); |
52 | }; |
53 | |
54 | TestCatalyst->config( 'home' => '.' ); |
55 | TestCatalyst->setup; |
ec4d7259 |
56 | } |
ec4d7259 |
57 | |
58 | use Catalyst::Test qw/TestCatalyst/; |
59 | |
d5c890a4 |
60 | ok( TestCatalyst->controller( $_ ) ) for qw/ Apple Test::Apple /; |
ec4d7259 |
61 | ok( TestCatalyst->model( $_ ) ) for qw/ Banana Cherry /; |
cbe627b9 |
62 | is( TestCatalyst->controller('Apple2')->aaa, 'aaa'); |
63 | is( TestCatalyst->controller('Apple2')->bbb, 'bbb'); |
64 | is( TestCatalyst->model('CherryMoose')->aaa, 'aaa'); |
65 | is( TestCatalyst->model('CherryMoose')->bbb, 'bbb'); |
ec4d7259 |
66 | |
67 | done_testing; |