use strict;
use warnings;
use XML::Generator::RSS10;
use Test::More;
BEGIN {
eval { require XML::SAX::Writer };
if ($@) {
plan skip_all => 'Cannot run tests without XML::SAX::Writer.';
}
else {
}
}
{
package XML::Generator::RSS10::testing;
use base 'XML::Generator::RSS10::Module';
sub NamespaceURI { 'http://example.com/testing' }
}
{
package XML::Generator::RSS10::more;
use base 'XML::Generator::RSS10::Module';
sub NamespaceURI { 'http://example.com/less' }
}
{
my $out;
my $writer = XML::SAX::Writer->new( Output => \$out );
my $gen = XML::Generator::RSS10->new(
Handler => $writer,
modules => [ 'testing', 'more' ],
pretty => 1,
);
$gen->item(
title => 'Item 1 title',
link => 'http://example.com/foo1',
testing => { foo => 'bar' },
);
$gen->item(
title => 'Item 2 title',
link => 'http://example.com/foo2',
description => 'Item 2 description',
);
$gen->channel(
title => 'Channel title',
link => 'http://example.com/',
description => 'a description',
more => { or => 'less' },
);
like(
$out, qr{- ]+>.*bar.*
}s,
'expect to find testing:foo tag inside item tag for item 1'
);
like(
$out,
qr{]+>.*less.*}s,
'expect to find more:or tag inside channel tag'
);
foreach my $mod (
'XML::Generator::RSS10::testing',
'XML::Generator::RSS10::more'
) {
my $p = $mod->Prefix;
my $uri = $mod->NamespaceURI;
like(
$out, qr{xmlns:\Q$p\E=.\Q$uri\E.}s,
"expect to find $p namespace declaration"
);
}
}
done_testing();