]> Dogcows Code - chaz/p5-HTTP-AnyUA/commitdiff
fix transform in void context, Middleware::Runtime
authorCharles McGarvey <chazmcgarvey@brokenzipper.com>
Sat, 9 Mar 2019 19:30:04 +0000 (12:30 -0700)
committerCharles McGarvey <chazmcgarvey@brokenzipper.com>
Sat, 9 Mar 2019 19:32:10 +0000 (12:32 -0700)
lib/HTTP/AnyUA/Middleware.pm
lib/HTTP/AnyUA/Middleware/Runtime.pm
t/40-middleware-runtime.t
t/lib/MockBackend.pm

index 01dda30c434d0eaecf13b33ba0e16b0bc0453699..5f5359b0c93dcebfb5edd5cfb1df10be9b22dcfe 100644 (file)
@@ -24,7 +24,7 @@ package HTTP::AnyUA::Middleware;
         };
 
         if ($self->response_is_future) {
         };
 
         if ($self->response_is_future) {
-            $response->transform(
+            $response = $response->transform(
                 done => $handle_response,
                 fail => $handle_response,
             );
                 done => $handle_response,
                 fail => $handle_response,
             );
index ed1643cb6cbba60da75751425fee764e9df07e65..9021e4f629d62689790bcdcc043aa3c0a71da0df 100644 (file)
@@ -44,7 +44,7 @@ sub request {
     };
 
     if ($self->response_is_future) {
     };
 
     if ($self->response_is_future) {
-        $resp->transform(
+        $resp = $resp->transform(
             done => $handle_response,
             fail => $handle_response,
         );
             done => $handle_response,
             fail => $handle_response,
         );
index 5597fda9ed1f4ec46425dcd2f223c905d8d9780d..594555e7180f2050991735a8a2f821f1e9f02b1c 100644 (file)
@@ -5,8 +5,9 @@ use strict;
 
 use lib 't/lib';
 
 
 use lib 't/lib';
 
+use Future;
 use HTTP::AnyUA;
 use HTTP::AnyUA;
-use Test::More tests => 1;
+use Test::More tests => 2;
 
 HTTP::AnyUA->register_backend(Mock => '+MockBackend');
 
 
 HTTP::AnyUA->register_backend(Mock => '+MockBackend');
 
@@ -16,8 +17,23 @@ my $backend = $any_ua->backend;
 $any_ua->apply_middleware('Runtime');
 
 my $url = 'http://acme.tld/';
 $any_ua->apply_middleware('Runtime');
 
 my $url = 'http://acme.tld/';
-
+my $mock_response = {
+    success => 1,
+    status  => 200,
+    reason  => 'OK',
+    content => 'whatever',
+};
+
+$backend->response({%$mock_response});
 my $resp = $any_ua->get($url);
 note explain $resp;
 isnt $resp->{runtime}, undef, 'runtime is defined';
 
 my $resp = $any_ua->get($url);
 note explain $resp;
 isnt $resp->{runtime}, undef, 'runtime is defined';
 
+$backend->response(Future->done({%$mock_response}));
+$resp = $any_ua->get($url);
+$resp->on_done(sub {
+    my $resp = shift;
+    note explain $resp;
+    isnt $resp->{runtime}, undef, 'runtime is defined when response is future';
+});
+
index c8b653544eff5292e329e39c85788aeaa1b47aca..36f13e08c3d9268557e55728fc5cfc044b46c7e4 100644 (file)
@@ -4,6 +4,9 @@ package MockBackend;
 use warnings;
 use strict;
 
 use warnings;
 use strict;
 
+use Scalar::Util qw(blessed);
+use namespace::clean;
+
 use parent 'HTTP::AnyUA::Backend';
 
 
 use parent 'HTTP::AnyUA::Backend';
 
 
@@ -28,6 +31,8 @@ Get the requests the backend has handled so far.
 
 sub requests { @{$_[0]->{requests} || []} }
 
 
 sub requests { @{$_[0]->{requests} || []} }
 
+sub response_is_future { blessed($_[0]->{response}) && $_[0]->{response}->isa('Future') }
+
 sub request {
     my $self = shift;
 
 sub request {
     my $self = shift;
 
This page took 0.035216 seconds and 4 git commands to generate.