summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-09-28 23:57:01 -0500
committerJesse Luehrs <doy@tozt.net>2012-09-28 23:57:01 -0500
commitbe74ecf8a7ccda39a401b832f2044c9d2e334541 (patch)
tree92d31cdaead11bb8838926f4ed4115fc8944046a
parent6d67faeafe38ddb6277e0f7115aec453acf68cec (diff)
downloadweb-request-be74ecf8a7ccda39a401b832f2044c9d2e334541.tar.gz
web-request-be74ecf8a7ccda39a401b832f2044c9d2e334541.zip
factor this out
-rw-r--r--t/response-streaming.t32
1 files changed, 20 insertions, 12 deletions
diff --git a/t/response-streaming.t b/t/response-streaming.t
index b9c19de..55caefe 100644
--- a/t/response-streaming.t
+++ b/t/response-streaming.t
@@ -14,11 +14,8 @@ use Web::Response;
my $psgi_res = $res->finalize;
ok(ref($psgi_res) eq 'CODE', "got a coderef");
- my $complete_response;
- my $responder = sub { $complete_response = $_[0] };
- $psgi_res->($responder);
is_deeply(
- $complete_response,
+ resolve_response($psgi_res),
[ 200, [], ["Hello world"] ],
"got the right response"
);
@@ -36,11 +33,8 @@ use Web::Response;
my $psgi_res = $res->finalize;
ok(ref($psgi_res) eq 'CODE', "got a coderef");
- my $complete_response;
- my $responder = sub { $complete_response = $_[0] };
- $psgi_res->($responder);
is_deeply(
- $complete_response,
+ resolve_response($psgi_res),
[ 200, [], ["caf\xe9"] ],
"got the right response"
);
@@ -59,14 +53,28 @@ use Web::Response;
my $psgi_res = $res->finalize;
ok(ref($psgi_res) eq 'CODE', "got a coderef");
- my $complete_response;
- my $responder = sub { $complete_response = $_[0] };
- $psgi_res->($responder);
is_deeply(
- $complete_response,
+ resolve_response($psgi_res),
[ 200, [], ["caf\xc3\xa9"] ],
"got the right response"
);
}
+sub resolve_response {
+ my ($psgi_res) = @_;
+
+ if (ref($psgi_res) eq 'CODE') {
+ my $body = [];
+ $psgi_res->(sub {
+ $psgi_res = shift;
+ return Plack::Util::inline_object(
+ write => sub { push @$body, $_[0] },
+ close => sub { push @$psgi_res, $body },
+ );
+ });
+ }
+
+ return $psgi_res;
+}
+
done_testing;