#!/usr/bin/perl
use
lib
"$Bin/../lib"
,
"$Bin/lib"
;
eval
"use Test::Files 0.14"
;
plan
skip_all
=>
"Test::Files 0.14 required"
if
$@;
plan
tests
=> 10;
use_ok
'HTML::Encapsulate'
,
'download'
;
my
$temp_dir
=
"$Bin/temp/html-encapsulate"
;
my
$data_dir
=
"$Bin/data/html-encapsulate"
;
rmtree
$temp_dir
if
-e
$temp_dir
;
mkpath
$temp_dir
;
my
$ua
= LWP::UserAgent::Snapshot->new;
my
%useages
=
(
functional
=>
sub
{
my
%a
=
@_
;
download(
$a
{request},
$a
{dest},
$ua
);
},
oo_constructor
=>
sub
{
my
%a
=
@_
;
HTML::Encapsulate->new(
ua
=>
$ua
)->download(
$a
{request},
$a
{dest});
},
oo_method
=>
sub
{
my
%a
=
@_
;
HTML::Encapsulate->new->download(
$a
{request},
$a
{dest},
$ua
);
},
);
my
@cases
=
map
{ (File::Spec->splitpath(
$_
))[2] }
bsd_glob
"$data_dir/*"
;
foreach
my
$case
(
@cases
)
{
my
$reference_dir
=
"$data_dir/$case/reference"
;
$ua
->mock_from(
"$data_dir/$case/mock_data"
);
foreach
my
$useage_name
(
sort
keys
%useages
)
{
rmtree
$temp_dir
;
my
$request
= HTTP::Request->new(
GET
=>
$url
);
my
$useage
=
$useages
{
$useage_name
};
$useage
->(
request
=>
$request
,
url
=>
$url
,
dest
=>
$temp_dir
);
compare_dirs_ok(
"$reference_dir/nowhere"
,
"$temp_dir"
,
"case=$case/useage=$useage_name: downloaded files from $url match reference"
);
}
}