Daizu
view release on metacpan or search on metacpan
t/80feeds.t view on Meta::CPAN
'atom: feed <link> blog type');
# atom feed <updated>
(@elem) = $feed_elem->getChildrenByTagName('updated');
is(scalar @elem, 1, 'atom: one feed <updated>');
like($elem[0]->textContent, qr/\A\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ\z/,
'atom: feed <updated> is W3C datetime');
# atom entries
(@elem) = $feed_elem->getChildrenByTagName('entry');
is(scalar @elem, 3, 'atom: right number of feed <entry>');
my $entry_n = 1;
for my $entry_elem (@elem) {
my @elem;
my ($path, $exp_title, $exp_pubdate, $exp_url) =
expected_article_values($entry_n);
# atom entry <published>
(@elem) = $entry_elem->getChildrenByTagName('published');
is(scalar @elem, 1, 'atom: one entry <published>');
is($elem[0]->textContent, $exp_pubdate,
'atom: entry <published> is right datetime');
# atom entry <updated>
(@elem) = $entry_elem->getChildrenByTagName('updated');
is(scalar @elem, 1, 'atom: one entry <updated>');
like($elem[0]->textContent, qr/\A\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ\z/,
'atom: entry <updated> is W3C datetime');
# atom entry <id>
(@elem) = $entry_elem->getChildrenByTagName('id');
is(scalar @elem, 1, 'atom: one entry <id>');
is($elem[0]->textContent, guid_uri_for_path($wc, $path),
'atom: entry <id> right');
# atom entry <link>
(@elem) = $entry_elem->getChildrenByTagName('link');
is(scalar @elem, 1, 'atom: one entry <link>');
is($elem[0]->getAttribute('href'), $exp_url, 'atom: entry <link> href');
is($elem[0]->getAttribute('rel'), 'alternate', 'atom: entry <link> rel');
is($elem[0]->getAttribute('type'), 'text/html', 'atom: entry <link> type');
# atom entry <title>
(@elem) = $entry_elem->getChildrenByTagName('title');
is(scalar @elem, 1, 'atom: one entry <title>');
is($elem[0]->textContent, $exp_title, 'atom: entry <title> right');
# atom entry <content>
(@elem) = $entry_elem->getChildrenByTagName('content');
is(scalar @elem, 1, 'atom: one entry <content>');
is($elem[0]->getAttributeNS('http://www.w3.org/XML/1998/namespace', 'base'),
$exp_url, 'atom: entry <content> xml:base');
my $content_elem = $elem[0];
is($content_elem->getAttribute('type'), 'xhtml',
'atom: entry <content> type');
(@elem) = $content_elem->getChildrenByTagName('div');
is(scalar @elem, 1, 'atom: one entry <content><div>');
is($elem[0]->namespaceURI, 'http://www.w3.org/1999/xhtml',
'atom: entry <content><div> in XHTML namespace');
# Article 5 has a syntax highlighted bit in, but for the feed
# content the <span> elements and 'class' attribute should be
# removed, so as not to confuse aggregators.
if ($exp_title eq 'Article 5') {
(@elem) = $content_elem->getElementsByTagName('span');
is(scalar @elem, 0, 'atom: entry <content> has no <span> elements');
(@elem) = $content_elem->getElementsByTagName('pre');
SKIP: {
is(scalar @elem, 1, 'atom: entry <content> has a <pre> element');
skip '<pre> element missing', 1 unless @elem;
ok(!$elem[0]->hasAttribute('class'), 'atom: <pre> has no class');
}
}
++$entry_n;
}
$xml = make_test_feed($cms, 'rss2', 'content');
# rss2 feed root
$feed_elem = $xml->documentElement;
is($feed_elem->localname, 'rss', 'rss2: <rss> root');
(@elem) = $feed_elem->getChildrenByTagName('channel');
is(scalar @elem, 1, 'rss2: one feed <channel>');
my $chan_elem = $elem[0];
# rss2 feed <title>
(@elem) = $chan_elem->getChildrenByTagName('title');
is(scalar @elem, 1, 'rss2: one feed <title>');
is($elem[0]->textContent, 'Foo Blog', 'rss2: right title');
# rss2 feed <description> - must exist even if it's empty
(@elem) = $chan_elem->getChildrenByTagName('description');
is(scalar @elem, 1, 'rss2: one feed <description>');
# rss2 feed <link>
(@elem) = $chan_elem->getChildrenByTagName('link');
is(scalar @elem, 1, 'rss2: one feed <link>');
is($elem[0]->textContent, 'http://foo.com/blog/', 'rss2: feed <link> right');
# rss2 feed <generator>
(@elem) = $chan_elem->getChildrenByTagName('generator');
is(scalar @elem, 1, 'rss2: one feed <generator>');
is($elem[0]->textContent, "http://www.daizucms.org/?v=$Daizu::VERSION",
'rss2: feed <generator> content');
# rss2 feed <atom:link> to self
(@elem) = $chan_elem->getChildrenByTagName('atom:link');
is(scalar @elem, 1, 'rss2: one feed <atom:link>');
is($elem[0]->getAttribute('href'), 'http://foo.com/blog/feed.rss',
'rss2: feed <link> self href');
is($elem[0]->getAttribute('rel'), 'self',
'rss2: feed <link> self rel');
is($elem[0]->getAttribute('type'), 'application/rss+xml',
'rss2: feed <link> self type');
# rss2 feed <lastBuildDate>
(@elem) = $chan_elem->getChildrenByTagName('lastBuildDate');
( run in 3.198 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )