making unit_core_component.t work
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_component.t
CommitLineData
5e3121a8 1use Test::More;
fbcc39ad 2use strict;
3use warnings;
4
5use_ok('Catalyst');
6
7my @complist = map { "MyApp::$_"; } qw/C::Controller M::Model V::View/;
8
9{
10 package MyApp;
11
12 use base qw/Catalyst/;
13
14 __PACKAGE__->components({ map { ($_, $_) } @complist });
2f381252 15
16 # this is so $c->log->warn will work
17 __PACKAGE__->setup_log;
fbcc39ad 18}
19
20is(MyApp->comp('MyApp::V::View'), 'MyApp::V::View', 'Explicit return ok');
21
22is(MyApp->comp('C::Controller'), 'MyApp::C::Controller', 'Two-part return ok');
23
24is(MyApp->comp('Model'), 'MyApp::M::Model', 'Single part return ok');
25
fbcc39ad 26is_deeply([ MyApp->comp() ], \@complist, 'Empty return ok');
27
2f381252 28# Is this desired behaviour?
fbcc39ad 29is_deeply([ MyApp->comp('Foo') ], \@complist, 'Fallthrough return ok');
2f381252 30
31# regexp behavior
32{
5a53ef3d 33 is_deeply( [ MyApp->comp( qr{Model} ) ], [ 'MyApp::M::Model' ], 'regexp ok' );
2f381252 34
35 {
36 my $warnings = 0;
37 no warnings 'redefine';
38 local *Catalyst::Log::warn = sub { $warnings++ };
39
5a53ef3d 40 is_deeply( [ MyApp->comp('::M::Model') ], \@complist, 'no reulsts for regexp fallback');
2f381252 41 ok( $warnings, 'regexp fallback warnings' );
2f381252 42 }
43
44}
45
46# multiple returns
47{
f5dfb6ff 48# FIXME: this cannot be found by looking only in the container.
49# either the test must be changed, or the regexp must be run against
50# $c->components() in Catalyst.pm
51 diag('this test will not work by searching the container');
52 diag('check the source of this file for more info');
deca8181 53 my @expected = sort qw( MyApp::C::Controller MyApp::M::Model );
54 my @got = sort MyApp->comp( qr{::[MC]::} );
55 is_deeply( \@got, \@expected, 'multiple results from regexp ok' );
2f381252 56}
57
58# failed search
59{
60 is_deeply( scalar MyApp->comp( qr{DNE} ), 0, 'no results for failed search' );
61}
62
63
64#checking @args passed to ACCEPT_CONTEXT
65{
66 my $args;
67
15a32cd5 68 {
69 no warnings 'once';
70 *MyApp::M::Model::ACCEPT_CONTEXT = sub { my ($self, $c, @args) = @_; $args= \@args};
71 }
72
73 my $c = bless {}, 'MyApp';
2f381252 74
15a32cd5 75 $c->component('MyApp::M::Model', qw/foo bar/);
2f381252 76 is_deeply($args, [qw/foo bar/], 'args passed to ACCEPT_CONTEXT ok');
77
15a32cd5 78 $c->component('M::Model', qw/foo2 bar2/);
2f381252 79 is_deeply($args, [qw/foo2 bar2/], 'args passed to ACCEPT_CONTEXT ok');
5d50f369 80}
2f381252 81
5e3121a8 82done_testing;