CPAN-Testers-WWW-Reports-Query-AJAX

 view release on metacpan or  search on metacpan

t/10query.t  view on Meta::CPAN

            pc_na       => 0,
            pc_unknown  => 0
        }
    }
);

#----------------------------------------------------------------------------
# Test Conditions

BEGIN {
    eval "use Test::MockObject";
    $nomock = $@;

    unless($nomock) {
        $mock1 = Test::MockObject->new();
        $mock1->fake_module( 'WWW::Mechanize',
                    'agent_alias'   =>  \&fake_alias,
                    'get'           =>  \&fake_get,
                    'success'       =>  \&fake_success,
                    'content'       =>  \&fake_content  );
        $mock1->fake_new( 'WWW::Mechanize' );
        $mock1->mock( 'agent_alias',    \&fake_alias    );
        $mock1->mock( 'get',            \&fake_get      );
        $mock1->mock( 'success',        \&fake_success  );
        $mock1->mock( 'content',        \&fake_content  );
    }
}

#----------------------------------------------------------------------------
# Test Main

SKIP: {
    skip "Test::MockObject required for testing", 118 if $nomock;

    my $query = CPAN::Testers::WWW::Reports::Query::AJAX->new();
    is($query,undef,"no args, no object" );

    for my $args (@args) {

        $RAW = $args->{raw};

        my $query = CPAN::Testers::WWW::Reports::Query::AJAX->new( %{$args->{args}} );
        ok($query,"got response: $args->{args}{dist}" . ($args->{args}{version} ? "-$args->{args}{version}" : '') );

        my $raw  = $query->raw();
        my $data = $query->data();

        #diag( join(', ', map {"$_ => $args->{args}{$_}"} keys %{$args->{args}} ) );
        #diag( "raw=$raw" );

        is($query->is_success,  1,  '.. returned successfully');
        is($query->error,       '', '.. no errors');
        
        if($args->{results}) {
            is($query->all,         $args->{results}{all},          '.. counted all reports');
            is($query->pass,        $args->{results}{pass},         '.. counted pass reports');
            is($query->fail,        $args->{results}{fail},         '.. counted fail reports');
            is($query->na,          $args->{results}{na},           '.. counted na reports');
            is($query->unknown,     $args->{results}{unknown},      '.. counted unknown reports');

            is($query->pc_pass,     $args->{results}{pc_pass},      '.. percentage pass reports');
            is($query->pc_fail,     $args->{results}{pc_fail},      '.. percentage fail reports');
            is($query->pc_na,       $args->{results}{pc_na},        '.. percentage na reports');
            is($query->pc_unknown,  $args->{results}{pc_unknown},   '.. percentage unknown reports');
        }

        if($raw) {
            my $version = $args->{args}{version} || '0.15';

            if($args->{args}{format} && $args->{args}{format} eq 'html') {
                is($query->{options}{format},$args->{args}{format},'.. format the same: html');
                like($raw,qr{<td><a href=(\\)?"javascript:selectReports\('App-Maisha-$version'\);(\\)?">$version</a></td>},'.. got version statement in raw');
                ok(1,".. we don't parse html format");
            } elsif($args->{args}{format} && $args->{args}{format} eq 'csv') {
                is($query->{options}{format},$args->{args}{format},'.. format the same: csv');
                like($raw,qr{$version,\d+},'.. got version statement in raw');
                ok($data->{$version},'.. got version in hash');
            } else { # xml
                is($query->{options}{format},'xml','.. default format: xml');
                like($raw,qr{<version all=(\\"\d+\\"|"\d+").*?>$version</version>},'.. got version statement in raw');
                ok($data->{$version},'.. got version in hash');
            }
        } else {
            diag($query->error());
            ok($query->error());
            ok(1,'..skipped, request did not succeed');
        }
    }
}

# crude, but it'll hopefully do ;)
sub pingtest {
    my $domain = 'www.cpantesters.org';
    my $cmd =   $^O =~ /solaris/i                           ? "ping -s $domain 56 1" :
                $^O =~ /dos|os2|mswin32|netware|cygwin/i    ? "ping -n 1 $domain "
                                                            : "ping -c 1 $domain >/dev/null 2>&1";

    system($cmd);
    my $retcode = $? >> 8;
    # ping returns 1 if unable to connect
    return $retcode;
}

sub fake_alias      {}
sub fake_get        {}
sub fake_success    { return 1; }
sub fake_content    { return $RAW; }



( run in 2.353 seconds using v1.01-cache-2.11-cpan-5a3173703d6 )