my
$client
= WebService::Shutterstock::Client->new;
my
$customer
= WebService::Shutterstock::Customer->new(
auth_info
=> {
auth_token
=> 123,
username
=>
'abc'
},
client
=>
$client
);
isa_ok(
$customer
,
'WebService::Shutterstock::Customer'
);
can_ok
$customer
,
'downloads'
;
{
my
$guard
= Test::MockModule->new(
'REST::Client'
);
my
$expected_page
;
$guard
->mock(
'GET'
,
sub
{
my
(
$self
,
$url
) =
@_
;
like
$url
,
qr'/customers/abc/images/downloads.json\?'
,
'correct URL'
;
like
$url
,
qr{auth_token=123}
,
'includes auth_token'
;
if
(
defined
$expected_page
){
like
$url
,
qr{page_number=$expected_page}
,
"has page_number param ($expected_page)"
;
}
else
{
unlike
$url
,
qr{page_number=}
,
'has no page_number param'
;
}
return
$self
->response(
response(
200,
'{"123123":[{"time":"2012-01-01 00:00:00","image_id":"123","metadata":{"purchase_order":"purchase order"},"license":"premier"}]}'
)
);
});
my
$downloads
=
$customer
->downloads;
ok
exists
$downloads
->{123123},
'has subscription 123123'
;
$customer
->downloads(
page_number
=>
$expected_page
= 0);
$customer
->downloads(
page_number
=>
$expected_page
= 1);
}
done_testing;
sub
response {
@_
= [
@_
]
unless
ref
$_
[0] eq
'ARRAY'
;
my
$code
=
$_
[0]->[0];
my
$data
=
$_
[0]->[1];
my
$method
=
$_
[1]->[0] ||
'GET'
;
my
$uri
=
$_
[1]->[1] ||
'/'
;
my
$response
= HTTP::Response->new(
$code
,
undef
, [
'Content-Type'
=>
'application/json'
],
$data
);
$response
->request(HTTP::Request->new(
$method
,
$uri
));
return
$response
;
}