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