The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::RequiresInternet 'test.wikipedia.org' => 80;
use Test::More tests => 10;

use MediaWiki::Bot;
my $t = __FILE__;

my $bot = MediaWiki::Bot->new({
    agent   => "MediaWiki::Bot tests (https://metacpan.org/MediaWiki::Bot; $t)",
    host    => 'test.wikipedia.org',
});

my @pages = $bot->linksearch('*.example.com', undef, undef, { max => 1 });

ok(     defined $pages[0],                                  'Something was returned');
isa_ok( $pages[0],                      'HASH',             'A hash was returned');
ok(     defined $pages[0]->{'url'},                         'The hash contains a URL');
like(   $pages[0]->{'url'},             qr/example\.com/,   'The URL is one we requested');
ok(     defined $pages[0]->{'title'},                       'The has contains a page title');
like(   $pages[0]->{'title'},           qr/\w+/,            'The title looks valid');

$bot->linksearch('*.example.com', undef, undef, { max=> 1, hook => \&test_hook });
my $url;
my $title;
sub test_hook {
    my ($res) = @_;
    my $hashref = $res->[0];
    $url = $hashref->{'url'};
    $title = $hashref->{'title'};
}
ok(     defined($url),                                      'A URL was returned via callback');
like(   $url,                           qr/example\.com/,   'The URL is right');
ok(     defined($title),                                    'A title was returned via callback');
like(   $title,                         qr/\w+/,            'The title looks valid');