#!/usr/bin/perl -w
my
$nomock
;
my
$mock
;
BEGIN {
eval
"use Test::MockObject"
;
$nomock
= $@;
unless
(
$nomock
) {
$mock
= Test::MockObject->new();
$mock
->fake_module(
'Net::Twitter'
,
'update'
=>
sub
{
return
1; },
get_authorization_url
=>
sub
{
return
'http://127.0.0.1'
} );
$mock
->fake_new(
'Net::Twitter'
);
$mock
->set_true(
qw(
update
show_user
user_timeline
following_timeline
public_timeline
replies
new_direct_message
direct_messages
sent_direct_messages
create_friend
destroy_friend
following
access_token
access_token_secret
get_authorization_url
request_access_token
)
);
$mock
->set_list(
'friends'
, ());
$mock
->set_list(
'followers'
, ());
}
}
SKIP: {
skip
"Test::MockObject required for plugin testing\n"
, 29
if
(
$nomock
);
ok(
my
$obj
= App::Maisha::Plugin::Identica->new(),
"got object"
);
isa_ok(
$obj
,
'App::Maisha::Plugin::Identica'
);
my
$ret
=
$obj
->login({
username
=>
'test'
,
home
=>
'.'
,
test
=> 1 });
is(
$ret
, 1,
'.. login done'
);
my
$api
=
$obj
->api();
for
my
$k
(
qw/
followers
friends
friends_timeline
public_timeline
update
replies
direct_messages_from
direct_messages_to
send_message
user
user_timeline
/
){
for
my
$m
(
qw(api)
) {
my
$j
=
"${m}_$k"
;
my
$label
=
"[$j]"
;
SKIP: {
ok(
$obj
->can(
$j
),
"$label can"
) or skip
"'$j' method missing"
, 2;
isnt(
$obj
->
$j
(),
undef
,
"$label returns something"
);
}
}
}
for
my
$k
(
qw/
follow
unfollow
/
){
for
my
$m
(
qw(api)
) {
my
$j
=
"${m}_$k"
;
my
$label
=
"[$j]"
;
SKIP: {
ok(
$obj
->can(
$j
),
"$label can"
) or skip
"'$j' method missing"
, 2;
is(
$obj
->
$j
(),
undef
,
"$label returns nothing"
);
}
}
}
}
SKIP: {
skip
"Test::MockObject required for plugin testing\n"
, 6
if
(
$nomock
);
$mock
->set_always(
'friends'
, [{
screen_name
=>
'neilb'
},{
screen_name
=>
'barbie'
}]);
$mock
->set_always(
'followers'
, [{
screen_name
=>
'cpantesters'
}]);
ok(
my
$obj
= App::Maisha::Plugin::Identica->new(),
"got object"
);
isa_ok(
$obj
,
'App::Maisha::Plugin::Identica'
);
my
$ret
=
$obj
->login({
username
=>
'test'
,
home
=>
'.'
,
test
=> 1 });
is(
$ret
, 1,
'.. login done'
);
my
$users
=
$obj
->users;
is(
$users
,
undef
,
'no users yet'
);
$obj
->_build_users();
$users
=
$obj
->users;
is_deeply(
$users
, {
'neilb'
=> 1,
'barbie'
=> 1,
'cpantesters'
=> 1});
my
$results
= {
results
=> [{
created_at
=>
'Sat Oct 13 19:01:19 +0000 2012'
,
screen_name
=>
'barbie'
,
text
=>
'barbie says hi'
}]};
$mock
->set_always(
'search'
,
$results
);
$ret
=
$obj
->api_search(
'barbie'
);
is_deeply(
$ret
,
$results
);
}