3ac9dccb29a7562ba29a29f9420bf37c46136ece
[catagits/Catalyst-Runtime.git] / t / inject_component_util.t
1 use strict;
2 use warnings; 
3 use Test::More;
4 use FindBin;
5 use lib "$FindBin::Bin/lib";
6
7 BEGIN {
8   package RoleTest1;
9   use Moose::Role;
10
11   sub aaa { 'aaa' }
12
13  $INC{'RoleTest1.pm'} = __FILE__;
14
15   package RoleTest2;
16   use Moose::Role;
17
18   sub bbb { 'bbb' }
19
20  $INC{'RoleTest2.pm'} = __FILE__;
21
22   package Model::Banana;
23   use base qw/Catalyst::Model/;
24
25  $INC{'Model/Banana.pm'} = __FILE__;
26
27   package Model::BananaMoose;
28
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;
56 }
57  
58 use Catalyst::Test qw/TestCatalyst/;
59  
60 ok( TestCatalyst->controller( $_ ) ) for qw/ Apple Test::Apple /;
61 ok( TestCatalyst->model( $_ ) ) for qw/ Banana Cherry /;
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');
66
67 done_testing;