Adds test suite assuming orthogonality of query keywords/params
[catagits/Catalyst-Runtime.git] / t / inject_component_util.t
CommitLineData
ec4d7259 1use strict;
2use warnings;
3use Test::More;
d5c890a4 4use FindBin;
5use lib "$FindBin::Bin/lib";
6
ec4d7259 7BEGIN {
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
58use Catalyst::Test qw/TestCatalyst/;
59
d5c890a4 60ok( TestCatalyst->controller( $_ ) ) for qw/ Apple Test::Apple /;
ec4d7259 61ok( TestCatalyst->model( $_ ) ) for qw/ Banana Cherry /;
cbe627b9 62is( TestCatalyst->controller('Apple2')->aaa, 'aaa');
63is( TestCatalyst->controller('Apple2')->bbb, 'bbb');
64is( TestCatalyst->model('CherryMoose')->aaa, 'aaa');
65is( TestCatalyst->model('CherryMoose')->bbb, 'bbb');
ec4d7259 66
67done_testing;