use strict;
use Test::More (tests => 28);
my $HAVE_NETWORK;
BEGIN {
if ( $ENV{DATA_FEED_NETWORK_TEST}) {
$HAVE_NETWORK = 1;
} else {
eval {
require IO::Socket::INET;
my $socket = IO::Socket::INET->new(
PeerAddr => 'api.flickr.com',
PeerPort => 80
);
if ($socket && !$@) {
$HAVE_NETWORK = 1;
}
};
}
use_ok("Data::Feed");
}
{
my $atom = Data::Feed->parse( 't/data/atom.xml' );
isa_ok($atom, "Data::Feed::Atom");
is( $atom->title, 'First Weblog' );
my @entries = $atom->entries;
is( @entries, 2 );
for my $entry (@entries) {
ok( $entry->title );
}
}
SKIP: {
skip( "No network connection", 22 ) unless $HAVE_NETWORK;
my $url = URI->new('http://api.flickr.com/services/feeds/photos_public.gne');
my $feed = eval {
Data::Feed->parse($url);
};
if ($@ && $@ =~ /Failed to fetch/) {
skip( "Failed to fetch rss (skipping for sanity's sake)", 22 );
}
ok( $feed, "Fetch successful" );
my @entries = $feed->entries;
is( @entries, 20 );
for (@entries) {
for ($_->enclosures) {
ok( $_->url );
}
}
}