use strict;
use warnings;
no warnings qw/ uninitialized /;
use Test::More;
use WWW::Ohloh::API;
plan skip_all => <<'END_MSG', 1 unless $ENV{OHLOH_KEY};
set OHLOH_KEY to your api key to enable these tests
END_MSG
unless ( $ENV{TEST_OHLOH_ACCOUNT} =~ /(id|email):(.+)/ ) {
plan skip_all =>
"set TEST_OHLOH_ACCOUNT to 'id:accountid' or 'email:addie' "
. "to enable these tests";
}
plan 'no_plan';
my $ohloh = WWW::Ohloh::API->new( debug => 1, api_key => $ENV{OHLOH_KEY} );
diag "testing kudos with account $ENV{TEST_OHLOH_ACCOUNT}\n";
my $kudos = $ohloh->get_kudos( split ':', $ENV{TEST_OHLOH_ACCOUNT} );
ok $kudos->isa( 'WWW::Ohloh::API::Kudos' );
my %all = $kudos->all;
my @sent = $kudos->sent;
my @rcx = $kudos->received;
diag "received ", scalar( @rcx ), " gave ", scalar( @sent ), "\n";
ok exists $all{sent}, '$all{sent}';
ok exists $all{received}, '$all{received}';
ok @sent >= 0, "sent()";
ok @rcx >= 0, "received()";
is @{$all{received}} + @{$all{sent}} => @sent + @rcx,
"all = sent + received";
# testing the kudos themselves
for ( @sent, @rcx ) {
ok $_->created_at, 'created_at';
like $_->sender_account_id, qr/^\d+$/, 'sender_account_id';
ok length( $_->sender_account_name ), 'sender_account_name';
ok defined $_->receiver_account_name, 'receiver_account_name';
ok defined $_->receiver_account_id, 'receiver_account_id';
ok defined $_->project_id, 'project_id';
ok defined $_->project_name, 'project_name';
ok defined $_->contributor_id, 'contributor_id';
ok defined $_->contributor_name, 'contributor_name';
like $_->recipient_type, qr/^account|contributor$/, "recipient()";
}
SKIP: {
# take a single kudo
my( $k ) = grep { $_->recipient_type eq 'account' } ( @sent, @rcx )
or skip "no kudo to test on", 1;
isa_ok $k->sender, 'WWW::Ohloh::API::Account';
isa_ok $k->receiver, 'WWW::Ohloh::API::Account';
}