package App::Test;
use App::Class;
use Exporter 'import';
use HTML::TreeBuilder;
use HTTP::Request::Common;
our @EXPORT = qw( process_request get_next_location );
my $t; # set in initialise()
# not exported, needs to be called as App::Test::initialise ($jar, $test)
sub initialise ($jar, $test) {
$t->{cookie_jar} = $jar;
$t->{plack_test} = $test;
}
sub process_request ($req) {
$t->{cookie_jar}->add_cookie_header($req);
my $res = $t->{plack_test}->request($req);
$t->{cookie_jar}->extract_cookies($res);
return $res;
}
sub get_next_location ($res) {
my $location = $res->header('Location');
my $next_url = GET $location;
my $next_res = process_request($next_url);
return $next_res;
}
# not exported, needs to be called as App::Test::html2txt($res)
sub html2txt ($res) {
my $tree = HTML::TreeBuilder->new_from_content($res->decoded_content);
return $tree->as_text;
}
1;