#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 27;
BEGIN {
use_ok('XML::RSS::Feed');
use_ok('XML::RSS::Headline');
use_ok('Time::HiRes');
}
$SIG{__WARN__} = build_warn("Invalid argument");
isa_ok(
XML::RSS::Feed->new(
url => "http://www.jbisbee.com/rdf/",
name => 'jbisbee',
delay => 7200,
bad_arg => 1,
debug => 1,
),
"XML::RSS::Feed"
);
$SIG{__WARN__} = build_warn("No cache file found");
isa_ok(
XML::RSS::Feed->new(
title => "This is a fake RSS Title",
name => 'jbisbee_test',
url => "http://www.jbisbee.com/rsstest",
tmpdir => 'pretend_tmpdir',
debug => 1,
),
"XML::RSS::Feed"
);
isa_ok(
XML::RSS::Headline->new(
url => "http://www.jbisbee.com/testurl/1",
headline => "Test Headline",
),
"XML::RSS::Headline"
);
isa_ok(
XML::RSS::Headline->new(
url => "http://www.jbisbee.com/testurl/1",
description => "Test Headline",
),
"XML::RSS::Headline"
);
$SIG{__WARN__} = build_warn("Failed to set headline");
ok( !XML::RSS::Headline->new(
url => "http://www.jbisbee.com/testurl/1",
description => ".",
),
"Bad description"
);
isa_ok(
XML::RSS::Headline->new(
url => "http://www.jbisbee.com/testurl/1",
headline => "Test Headline",
description => "Test Description",
),
'XML::RSS::Headline',
'via url/headline/description'
);
isa_ok(
XML::RSS::Headline->new(
url => "http://www.jbisbee.com/testurl/1",
headline => "Test Headline",
first_seen => Time::HiRes::time(),
),
'XML::RSS::Headline',
'set first_seen'
);
isa_ok(
XML::RSS::Headline->new(
item => {
link => "http://www.jbisbee.com/testurl/1",
title => "Test Headline",
},
),
'XML::RSS::Headline',
'via $args{item} - link/title'
);
isa_ok(
XML::RSS::Headline->new(
item => {
link => "http://www.jbisbee.com/testurl/1",
title => "Test Headline",
description => "Test Description",
},
),
'XML::RSS::Headline',
'via $args{item} - link/title/description'
);
$SIG{__WARN__} = build_warn("Invalid argument");
isa_ok(
XML::RSS::Headline->new(
url => "http://www.jbisbee.com/testurl/1",
headline => "Test Headline",
description => "Test Description",
bad_arg => "bad argument"
),
"XML::RSS::Headline"
);
$SIG{__WARN__}
= build_warn("item must contain either title/link or description/link");
ok( !XML::RSS::Headline->new(
item => {
title => "Test Headline",
description => "Test Description"
}
),
"Failed to instantiate"
);
$SIG{__WARN__}
= build_warn("item must contain either title/link or description/link");
ok( !XML::RSS::Headline->new( item => { fake => 1 } ),
"Failed to instantiate" );
$SIG{__WARN__} = build_warn(
"Either item, url/headline. or url/description are required");
ok( !XML::RSS::Headline->new, "Failed to instantiate" );
ok( !XML::RSS::Headline->new( headline => "Test Headline" ),
"Failed to instantiate" );
ok( !XML::RSS::Headline->new( url => "http://www.jbisbee.com/testurl/1" ),
"Failed to instantiate" );
sub build_warn {
my @args = @_;
return sub { my ($warn) = @_; like( $warn, qr/$_/i, $_ ) for @args };
}