summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php')
-rw-r--r--vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php327
1 files changed, 183 insertions, 144 deletions
diff --git a/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php b/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
index 71ee74f28..54a9e428b 100644
--- a/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
+++ b/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
@@ -3,7 +3,7 @@
namespace PicoFeed\Parser;
use PHPUnit_Framework_TestCase;
-use DateTime;
+
class Rss20ParserTest extends PHPUnit_Framework_TestCase
{
@@ -16,257 +16,296 @@ class Rss20ParserTest extends PHPUnit_Framework_TestCase
$parser->execute();
}
- public function testFeedTitle()
+ public function testGetItemsTree()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals('WordPress News', $feed->getTitle());
+ $this->assertCount(4, $feed->items);
- $parser = new Rss20(file_get_contents('tests/fixtures/pcinpact.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertEquals('PC INpact', $feed->getTitle());
+ $this->assertEquals(array(), $feed->items);
}
- public function testFeedDescription()
+ public function testFindFeedTitle()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('литература на русском языке, либо написанная русскими авторами', $feed->getTitle());
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_fallback_on_invalid_feed_values.xml'));
$feed = $parser->execute();
- $this->assertEquals('WordPress News', $feed->getDescription());
+ $this->assertEquals('https://en.wikipedia.org/wiki/Category:Russian-language_literature', $feed->getTitle());
- $parser = new Rss20(file_get_contents('tests/fixtures/pcinpact.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_channel.xml'));
$feed = $parser->execute();
- $this->assertEquals('Actualités Informatique', $feed->getDescription());
+ $this->assertEquals('', $feed->getTitle());
- $parser = new Rss20(file_get_contents('tests/fixtures/sametmax.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertEquals('Deux développeurs en vadrouille qui se sortent les doigts du code', $feed->getDescription());
+ $this->assertEquals('', $feed->getTitle());
}
- public function testFeedLogo()
+ public function testFindFeedDescription()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals('', $feed->getLogo());
+ $this->assertEquals("Зародилась во второй половине X века, однако до XIX века,\nкогда начался её «золотой век», была практически неизвестна\nв мире.", $feed->getDescription());
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_channel.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('', $feed->getDescription());
- $parser = new Rss20(file_get_contents('tests/fixtures/radio-france.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertEquals('http://media.radiofrance-podcast.net/podcast09/RF_OMM_0000006330_ITE.jpg', $feed->getLogo());
+ $this->assertEquals('', $feed->getDescription());
}
- public function testFeedUrl()
+ public function testFindFeedLogo()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals('', $feed->getFeedUrl());
+ $this->assertEquals('https://ru.wikipedia.org/static/images/project-logos/ruwiki.png', $feed->getLogo());
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'), '', 'http://example.com/feed');
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_channel.xml'));
$feed = $parser->execute();
- $this->assertEquals('http://example.com/feed', $feed->getFeedUrl());
+ $this->assertEquals('', $feed->getLogo());
- $parser = new Rss20(file_get_contents('tests/fixtures/pcinpact.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertEquals('', $feed->getFeedUrl());
+ $this->assertEquals('', $feed->getLogo());
}
- public function testSiteUrl()
+ public function testFindFeedIcon()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
- $feed = $parser->execute();
- $this->assertEquals('http://wordpress.org/news', $feed->getSiteUrl());
-
- $parser = new Rss20(file_get_contents('tests/fixtures/pcinpact.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals('http://www.pcinpact.com/', $feed->getSiteUrl());
+ $this->assertEquals('', $feed->getIcon());
}
- public function testFeedId()
+ public function testFindFeedUrl()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals('http://wordpress.org/news', $feed->getId());
+ $this->assertEquals('', $feed->getFeedUrl());
}
- public function testFeedDate()
+ public function testFindSiteUrl()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals(1359066183, $feed->getDate()->getTimestamp());
+ $this->assertEquals('https://en.wikipedia.org/wiki/Category:Russian-language_literature', $feed->getSiteUrl());
- $parser = new Rss20(file_get_contents('tests/fixtures/fulltextrss.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_extra.xml'), '', 'https://feeds.wikipedia.org/category/Russian-language_literature.xml'); // relative url
$feed = $parser->execute();
- $this->assertEquals(time(), $feed->getDate()->getTimestamp(), '', 1);
- }
+ $this->assertEquals('https://feeds.wikipedia.org/wiki/Category:Russian-language_literature', $feed->getSiteUrl());
- public function testFeedLanguage()
- {
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_channel.xml'));
$feed = $parser->execute();
- $this->assertEquals('en-US', $feed->getLanguage());
- $this->assertEquals('en-US', $feed->items[0]->getLanguage());
+ $this->assertEquals('', $feed->getSiteUrl());
- $parser = new Rss20(file_get_contents('tests/fixtures/zoot_egkty.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertEquals('ur', $feed->getLanguage());
- $this->assertEquals('ur', $feed->items[0]->getLanguage());
+ $this->assertEquals('', $feed->getSiteUrl());
+ }
- $parser = new Rss20(file_get_contents('tests/fixtures/ibash.ru.xml'));
+ public function testFindFeedId()
+ {
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertEquals('ru', $feed->getLanguage());
- $this->assertEquals('ru', $feed->items[0]->getLanguage());
+ $this->assertEquals('https://en.wikipedia.org/wiki/Category:Russian-language_literature', $feed->getId());
}
- public function testItemId()
+ public function testFindFeedDate()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ // pubDate
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals(1433451900, $feed->getDate()->getTimestamp());
+
+ // lastBuildDate
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_extra.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('de679f14fc4774f0d6dfe73c3f8c8368ab85da18addf101a2af8c32ac6320f9f', $feed->items[0]->getId());
+ $this->assertEquals(1433451900, $feed->getDate()->getTimestamp());
- $parser = new Rss20(file_get_contents('tests/fixtures/pcinpact.xml'));
+ // prefer most recent date and not a particular date element
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_element_preference.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals(hash('sha256', '78872'), $feed->items[0]->getId());
+ $this->assertEquals(1433455500, $feed->getDate()->getTimestamp());
- $parser = new Rss20(file_get_contents('tests/fixtures/fulltextrss.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_channel.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals(hash('sha256', 'http://www.numerama.com/magazine/25669-brevets-un-juge-doute-de-la-bonne-volonte-de-google-et-apple.html'), $feed->items[0]->getId());
+ $this->assertEquals(time(), $feed->getDate()->getTimestamp(), '', 1);
- $parser = new Rss20(file_get_contents('tests/fixtures/debug_show.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals(hash('sha256', '38DC2FF1-4207-4C04-93F3-2DAFB0E559D9'), $feed->items[1]->getId());
- $this->assertEquals(hash('sha256', '3FA03A63-BEA2-4199-A1E4-D2963845F3F6'), $feed->items[2]->getId());
- $this->assertEquals($feed->items[1]->getUrl(), $feed->items[2]->getUrl());
- $this->assertNotEquals($feed->items[1]->getId(), $feed->items[2]->getId());
+ $this->assertEquals(time(), $feed->getDate()->getTimestamp(), '', 1);
}
- public function testItemUrl()
+ public function testFindFeedLanguage()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('ru', $feed->getLanguage());
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_channel.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('http://wordpress.org/news/2013/01/wordpress-3-5-1/', $feed->items[0]->getUrl());
+ $this->assertEquals('', $feed->getTitle());
- $parser = new Rss20(file_get_contents('tests/fixtures/pcinpact.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_feed.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('http://www.pcinpact.com/breve/78872-la-dcri-purge-wikipedia-par-menace-bel-effet-streisand-a-cle.htm?utm_source=PCi_RSS_Feed&utm_medium=news&utm_campaign=pcinpact', $feed->items[0]->getUrl());
+ $this->assertEquals('', $feed->getTitle());
}
- public function testItemTitle()
+ public function testFindItemId()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml')); // <guid>
+ $feed = $parser->execute();
+ $this->assertEquals('06e53052cd17cdfb264d9c37d495cc3746ac43f79488c7ce67894e718f674bd5', $feed->items[1]->getId());
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml')); // alternate generation
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('2012: A Look Back', $feed->items[1]->getTitle());
+ $this->assertEquals('eb6f2d388a77e1f7d067a924970622d630031365fd444abe776d974d95b21990', $feed->items[0]->getId());
- $parser = new Rss20(file_get_contents('tests/fixtures/womensweardaily.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('They Are Wearing: Frieze London Photo by Marcus Dawes', $feed->items[3]->getTitle());
+ $this->assertEquals('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', $feed->items[0]->getId());
}
- public function testItemDate()
+ public function testFindItemUrl()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('2013-01-01', $feed->items[1]->getDate()->format('Y-m-d'));
+ $this->assertEquals('https://en.wikipedia.org/wiki/War_and_Peace', $feed->items[0]->getUrl()); // <rss:link>
+ $this->assertEquals('https://en.wikipedia.org/wiki/Crime_and_Punishment', $feed->items[1]->getUrl()); // <atom:link>
+ $this->assertEquals('https://en.wikipedia.org/wiki/Doctor_Zhivago_(novel)', $feed->items[2]->getUrl()); // <feedburner:origLink>
+ $this->assertEquals('https://guid.wikipedia.org/wiki/A_Hero_of_Our_Time', $feed->items[3]->getUrl()); // <guid>
- $parser = new Rss20(file_get_contents('tests/fixtures/fulltextrss.xml'));
+ // relative urls
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_extra.xml'), '', 'https://feeds.wikipedia.org/category/Russian-language_literature.xml');
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('2013-04-12', $feed->items[0]->getDate()->format('Y-m-d'));
- }
+ $this->assertEquals('https://feeds.wikipedia.org/wiki/War_and_Peace', $feed->items[0]->getUrl()); // <rss:link>
+ $this->assertEquals('https://feeds.wikipedia.org/wiki/Crime_and_Punishment', $feed->items[1]->getUrl()); // <atom:link>
+ $this->assertEquals('https://feeds.wikipedia.org/wiki/Doctor_Zhivago_(novel)', $feed->items[2]->getUrl()); // <feedburner:origLink>
- public function testItemLanguage()
- {
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_element_preference.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('en-US', $feed->items[1]->getLanguage());
- }
+ $this->assertEquals('https://en.wikipedia.org/wiki/War_and_Peace', $feed->items[0]->getUrl()); // <feedburner:origLink> is preferred over <rss:link>, <atom:link>, <guid>
+ $this->assertEquals('https://en.wikipedia.org/wiki/Crime_and_Punishment', $feed->items[1]->getUrl()); // <rss:link> is preferred over <atom:link>, <guid>
+ $this->assertEquals('https://en.wikipedia.org/wiki/Doctor_Zhivago_(novel)', $feed->items[2]->getUrl()); // <atom:link> is preferred over <guid>
- public function testItemAuthor()
- {
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_fallback_on_invalid_item_values.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('Jen Mylo', $feed->items[1]->getAuthor());
+ $this->assertEquals('', $feed->items[0]->getUrl()); // <guid> is invalid URI
- $parser = new Rss20(file_get_contents('tests/fixtures/rss2sample.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('webmaster@example.com', $feed->items[2]->getAuthor());
+ $this->assertEquals('', $feed->items[0]->getUrl());
}
- public function testItemContent()
+ public function testFindItemTitle()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/allgemeine-zeitung.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('Война и мир', $feed->items[0]->getTitle());
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_fallback_on_invalid_item_values.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals(
- '<p>OBER-FLÖRSHEIM - (red). Sein erheblich beschädigtes Fahrzeug hat ein Fahrer in der Nacht von Donnerstag auf Freitag mitten auf der Ober-Flörsheimer Hauptstraße stehen lassen. Beim Verlassen des Autos in Richtung ...</p>',
- $feed->items[2]->getContent()
- );
+ $this->assertEquals('https://en.wikipedia.org/wiki/Doctor_Zhivago_(novel)', $feed->items[2]->getTitle());
- $parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertTrue(strpos($feed->items[1]->getContent(), '<p>Another year is coming') === 0);
+ $this->assertEquals('', $feed->items[0]->getTitle());
+ }
- $parser = new Rss20(file_get_contents('tests/fixtures/rss2sample.xml'));
+ public function testFindItemDate()
+ {
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertTrue(strpos($feed->items[1]->getContent(), '<p>Sky watchers in Europe') === 0);
+ $this->assertEquals(1433451720, $feed->items[0]->getDate()->getTimestamp()); // item date
+ $this->assertEquals(1433451900, $feed->items[1]->getDate()->getTimestamp()); // fallback to feed date
- $parser = new Rss20(file_get_contents('tests/fixtures/ibash.ru.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertTrue(strpos($feed->items[0]->getContent(), '<p>Хабр, обсуждение фейлов на работе: reaferon: Интернет') === 0);
+ $this->assertEquals(time(), $feed->items[0]->getDate()->getTimestamp(), 1);
}
- public function testItemEnclosure()
+ public function testFindItemLanguage()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/rue89.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('http://rue89.feedsportal.com/c/33822/f/608948/e/1/s/2a687021/l/0L0Srue890N0Csites0Cnews0Cfiles0Cstyles0Cmosaic0Cpublic0Czapnet0Cthumbnail0Isquare0C20A130C0A40Ccahuzac0I10Bpng/cahuzac_1.png', $feed->items[0]->getEnclosureUrl());
- $this->assertEquals('image/png', $feed->items[0]->getEnclosureType());
+ $this->assertEquals('bg', $feed->items[0]->getLanguage()); // item language
+ $this->assertEquals('ru', $feed->items[1]->getLanguage()); // fallback to feed language
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('', $feed->items[0]->getLanguage());
}
- public function testFeedsReportedAsNotWorking()
+ public function testFindItemAuthor()
{
- $parser = new Rss20(file_get_contents('tests/fixtures/biertaucher.xml'));
+ // items[0] === item author
+ // items[1] === feed author via empty fallback (channel/managingEditor)
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('Лев Николаевич Толсто́й', $feed->items[0]->getAuthor());
+ $this->assertEquals('Вики педии - свободной энциклопедии', $feed->items[1]->getAuthor());
+
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_dc.xml'));
+ $feed = $parser->execute();
+ $this->assertEquals('Лев Николаевич Толсто́й', $feed->items[0]->getAuthor());
+ $this->assertEquals('Вики педии - свободной энциклопедии', $feed->items[1]->getAuthor());
+
+ // <dc:creator> is preferred over <author>
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_element_preference.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals(177, count($feed->items));
+ $this->assertEquals('Лев Николаевич Толсто́й', $feed->items[0]->getAuthor());
+ $this->assertEquals('Вики педии - свободной энциклопедии', $feed->items[1]->getAuthor());
- $parser = new Rss20(file_get_contents('tests/fixtures/radio-france.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals(52, count($feed->items));
+ $this->assertEquals('', $feed->items[0]->getAuthor());
+ }
+
+ public function testFindItemContent()
+ {
+ // items[0] === <description>
+ // items[1] === <content:encoded>
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
+ $parser->disableContentFiltering();
+ $feed = $parser->execute();
+ $this->assertTrue(strpos($feed->items[0]->getContent(), "В наброске предисловия к «Войне и миру» Толстой\nписал, что в 1856 г.") === 0);
+ $this->assertTrue(strpos($feed->items[1]->getContent(), "<h1>\nИстория создания\n</h1>\n<p>\nОсенью \n<a href=\"/wiki/1865_%D0%B3%D0%BE%D0%B4\"") === 0);
- $parser = new Rss20(file_get_contents('tests/fixtures/fanboys.fm_episodes.all.mp3.rss'));
+ // <content:encoding> is preferred over <description>
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_element_preference.xml'));
+ $parser->disableContentFiltering();
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
+ $this->assertTrue(strpos($feed->items[1]->getContent(), "<h1>\nИстория создания\n</h1>\n<p>\nОсенью \n<a href=\"/wiki/1865_%D0%B3%D0%BE%D0%B4\"") === 0);
- $parser = new Rss20(file_get_contents('tests/fixtures/geekstammtisch.de_episodes.mp3.rss'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_fallback_on_invalid_item_values.xml'));
+ $parser->disableContentFiltering();
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
- $this->assertEquals('http://geekstammtisch.de/#GST001', $feed->items[1]->getUrl());
+ $this->assertTrue(strpos($feed->items[1]->getContent(), "Осенью 1865 года, потеряв все свои\nденьги в казино") === 0); // <content:encoded> => <description>
- $parser = new Rss20(file_get_contents('tests/fixtures/lincoln_loop.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
+ $parser->disableContentFiltering();
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
+ $this->assertEquals('', $feed->items[0]->getContent());
+ }
- $parser = new Rss20(file_get_contents('tests/fixtures/next_inpact_full.xml'));
+ public function testFindItemEnclosure()
+ {
+ // Test tests covers the preference of <feedburner:origEnclosureLink> over <enclosure> as well
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
+ $this->assertEquals('https://upload.wikimedia.org/wikipedia/commons/4/41/War-and-peace_1873.gif', $feed->items[0]->getEnclosureUrl()); // <enclosure>
+ $this->assertEquals('image/gif', $feed->items[0]->getEnclosureType());
+ $this->assertEquals('https://upload.wikimedia.org/wikipedia/commons/7/7b/Crime_and_Punishment-1.png', $feed->items[1]->getEnclosureUrl()); // <feedburner:origEnclosureLink>
- $parser = new Rss20(file_get_contents('tests/fixtures/jeux-linux.fr.xml'));
+ $parser = new Rss20(file_get_contents('tests/fixtures/rss_20_empty_item.xml'));
$feed = $parser->execute();
- $this->assertNotEmpty($feed->items);
+ $this->assertEquals('', $feed->items[0]->getEnclosureUrl());
+ $this->assertEquals('', $feed->items[0]->getEnclosureType());
}
-}
+} \ No newline at end of file