X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fdispatch_misc.t;h=842cf52883bf9b05aa1d824d8c98f819efb5aa11;hb=1f727762b7d2af3c22ae86a9c9012154a82b1457;hp=7ad4cd858ec658eae0dc05a30796a853372cbebd;hpb=efbff59469fee6c705f12a22336c9a8e2b21abc5;p=catagits%2FWeb-Simple.git diff --git a/t/dispatch_misc.t b/t/dispatch_misc.t index 7ad4cd8..842cf52 100644 --- a/t/dispatch_misc.t +++ b/t/dispatch_misc.t @@ -16,12 +16,16 @@ my @dispatch; package MiscTest; sub dispatch_request { @dispatch } + sub string_method { [ 999, [], [""] ]; } } my $app = MiscTest->new; sub run_request { $app->run_test_request( @_ ); } +string_method_name(); app_is_non_plack(); +app_is_object(); +app_is_just_sub(); plack_app_return(); broken_route_def(); invalid_psgi_responses(); @@ -32,11 +36,19 @@ matcher_nonsub_pair(); done_testing(); +sub string_method_name { + @dispatch = ( '/' => "string_method" ); + + my $get = run_request( GET => 'http://localhost/' ); + + cmp_ok $get->code, '==', 999, "a dispatcher that's a string matching a method on the dispatch object gets executed"; +} + sub app_is_non_plack { my $r = HTTP::Response->new( 999 ); - my $d = Web::Dispatch->new( app => $r ); + my $d = Web::Dispatch->new( dispatch_app => $r ); eval { $d->call }; like $@, qr/No idea how we got here with HTTP::Response/, @@ -44,6 +56,29 @@ sub app_is_non_plack { undef $@; } +sub app_is_object { + { + + package ObjectApp; + use Moo; + sub to_app { [ 999, [], ["ok"] ] } + } + + my $o = ObjectApp->new; + my $d = Web::Dispatch->new( dispatch_object => $o ); + my $res = $d->call; + + cmp_ok $res->[0], '==', 999, "Web::Dispatch can dispatch properly, given only an object with to_app method"; +} + +sub app_is_just_sub { + my $d = Web::Dispatch->new( dispatch_app => sub () { [ 999, [], ["ok"] ] } ); + my $res = $d->call( {} ); + + cmp_ok $res->[0], '==', 999, + "Web::Dispatch can dispatch properly, given only an app that's just a sub, with no object involved"; +} + sub plack_app_return { {