use_ok(
'Catalyst'
);
my
@complist
=
map
{
"MyApp::$_"
; }
qw/C::Controller M::Model V::View/
;
{
__PACKAGE__->components({
map
{ (
$_
,
$_
) }
@complist
});
__PACKAGE__->setup_log(
'fatal'
);
}
is(MyApp->comp(
'MyApp::V::View'
),
'MyApp::V::View'
,
'Explicit return ok'
);
is(MyApp->comp(
'C::Controller'
),
'MyApp::C::Controller'
,
'Two-part return ok'
);
is(MyApp->comp(
'Model'
),
'MyApp::M::Model'
,
'Single part return ok'
);
is_deeply([ MyApp->comp() ], \
@complist
,
'Empty return ok'
);
is_deeply([ MyApp->comp(
'Foo'
) ], \
@complist
,
'Fallthrough return ok'
);
{
is_deeply( [ MyApp->comp(
qr{Model}
) ], [
'MyApp::M::Model'
],
'regexp ok'
);
is_deeply( [ MyApp->comp(
'MyApp::V::View$'
) ], [
'MyApp::V::View'
],
'Explicit return ok'
);
is_deeply( [ MyApp->comp(
'MyApp::C::Controller$'
) ], [
'MyApp::C::Controller'
],
'Explicit return ok'
);
is_deeply( [ MyApp->comp(
'MyApp::M::Model$'
) ], [
'MyApp::M::Model'
],
'Explicit return ok'
);
is_deeply( [ MyApp->comp(
'M::Model'
) ], [
'MyApp::M::Model'
],
'Explicit return ok'
);
{
my
$warnings
= 0;
no
warnings
'redefine'
;
local
*Catalyst::Log::warn
=
sub
{
$warnings
++ };
is_deeply( [ MyApp->comp(
'::M::Model'
) ], [
'MyApp::M::Model'
],
'Explicit return ok'
);
ok(
$warnings
,
'regexp fallback warnings'
);
$warnings
= 0;
is_deeply( [ MyApp->comp(
'Mode'
) ], [
'MyApp::M::Model'
],
'Explicit return ok'
);
ok(
$warnings
,
'regexp fallback warnings'
);
$warnings
= 0;
is(MyApp->comp(
'::M::'
),
'MyApp::M::Model'
,
'Regex return ok'
);
ok(
$warnings
,
'regexp fallback for comp() warns'
);
}
}
{
my
@expected
=
sort
qw( MyApp::C::Controller MyApp::M::Model )
;
my
@got
=
sort
MyApp->comp(
qr{::[MC]::}
);
is_deeply( \
@got
, \
@expected
,
'multiple results from regexp ok'
);
}
{
is_deeply(
scalar
MyApp->comp(
qr{DNE}
), 0,
'no results for failed search'
);
}
{
my
$args
;
{
no
warnings
'once'
;
*MyApp::M::Model::ACCEPT_CONTEXT
=
sub
{
my
(
$self
,
$c
,
@args
) =
@_
;
$args
= \
@args
};
}
my
$c
=
bless
{},
'MyApp'
;
$c
->component(
'MyApp::M::Model'
,
qw/foo bar/
);
is_deeply(
$args
, [
qw/foo bar/
],
'args passed to ACCEPT_CONTEXT ok'
);
$c
->component(
'M::Model'
,
qw/foo2 bar2/
);
is_deeply(
$args
, [
qw/foo2 bar2/
],
'args passed to ACCEPT_CONTEXT ok'
);
$c
->component(
'Mode'
,
qw/foo3 bar3/
);
is_deeply(
$args
, [
qw/foo3 bar3/
],
'args passed to ACCEPT_CONTEXT ok'
);
}