From: ArthurHoaro Date: Sat, 12 Mar 2016 16:54:56 +0000 (+0100) Subject: FeedBuilder unit tests X-Git-Tag: v0.7.0~23^2~2 X-Git-Url: https://git.immae.eu/?p=github%2Fshaarli%2FShaarli.git;a=commitdiff_plain;h=89baf23ddfaf82cc663e26f76c307ef8e4bf4b02 FeedBuilder unit tests --- diff --git a/tests/FeedBuilderTest.php b/tests/FeedBuilderTest.php new file mode 100644 index 00000000..069b1581 --- /dev/null +++ b/tests/FeedBuilderTest.php @@ -0,0 +1,212 @@ +write(self::$testDatastore); + self::$linkDB = new LinkDB(self::$testDatastore, true, false); + self::$serverInfo = array( + 'HTTPS' => 'Off', + 'SERVER_NAME' => 'host.tld', + 'SERVER_PORT' => '80', + 'SCRIPT_NAME' => '/index.php', + 'REQUEST_URI' => '/index.php?do=feed', + ); + } + + /** + * Test GetTypeLanguage(). + */ + public function testGetTypeLanguage() + { + $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_ATOM, null, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $this->assertEquals(self::$ATOM_LANGUAGUE, $feedBuilder->getTypeLanguage()); + $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_RSS, null, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $this->assertEquals(self::$RSS_LANGUAGE, $feedBuilder->getTypeLanguage()); + $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_ATOM, null, null, false); + $this->assertEquals('en', $feedBuilder->getTypeLanguage()); + $feedBuilder = new FeedBuilder(null, FeedBuilder::$FEED_RSS, null, null, false); + $this->assertEquals('en-en', $feedBuilder->getTypeLanguage()); + } + + /** + * Test buildData with RSS feed. + */ + public function testRSSBuildData() + { + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_RSS, self::$serverInfo, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $data = $feedBuilder->buildData(); + // Test headers (RSS) + $this->assertEquals(self::$RSS_LANGUAGE, $data['language']); + $this->assertEmpty($data['pubsubhub_url']); + $this->assertEquals('Tue, 10 Mar 2015 11:46:51 +0100', $data['last_update']); + $this->assertEquals(true, $data['show_dates']); + $this->assertEquals('http://host.tld/index.php?do=feed', $data['self_link']); + $this->assertEquals('http://host.tld/', $data['index_url']); + $this->assertFalse($data['usepermalinks']); + $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); + + // Test first link (note link) + $link = array_shift($data['links']); + $this->assertEquals('20150310_114651', $link['linkdate']); + $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); + $this->assertEquals('http://host.tld/?WDWyig', $link['url']); + $this->assertEquals('Tue, 10 Mar 2015 11:46:51 +0100', $link['iso_date']); + $this->assertContains('Stallman has a beard', $link['description']); + $this->assertContains('Permalink', $link['description']); + $this->assertContains('http://host.tld/?WDWyig', $link['description']); + $this->assertEquals(1, count($link['taglist'])); + $this->assertEquals('stuff', $link['taglist'][0]); + + // Test URL with external link. + $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $data['links']['20150310_114633']['url']); + + // Test multitags. + $this->assertEquals(5, count($data['links']['20141125_084734']['taglist'])); + $this->assertEquals('css', $data['links']['20141125_084734']['taglist'][0]); + } + + /** + * Test buildData with ATOM feed (test only specific to ATOM). + */ + public function testAtomBuildData() + { + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $data = $feedBuilder->buildData(); + $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); + $link = array_shift($data['links']); + $this->assertEquals('2015-03-10T11:46:51+01:00', $link['iso_date']); + } + + /** + * Test buildData with search criteria. + */ + public function testBuildDataFiltered() + { + $criteria = array( + 'searchtags' => 'stuff', + 'searchterm' => 'beard', + ); + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, $criteria, false); + $feedBuilder->setLocale(self::$LOCALE); + $data = $feedBuilder->buildData(); + $this->assertEquals(1, count($data['links'])); + $link = array_shift($data['links']); + $this->assertEquals('20150310_114651', $link['linkdate']); + } + + /** + * Test buildData with nb limit. + */ + public function testBuildDataCount() + { + $criteria = array( + 'nb' => '1', + ); + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, $criteria, false); + $feedBuilder->setLocale(self::$LOCALE); + $data = $feedBuilder->buildData(); + $this->assertEquals(1, count($data['links'])); + $link = array_shift($data['links']); + $this->assertEquals('20150310_114651', $link['linkdate']); + } + + /** + * Test buildData with permalinks on. + */ + public function testBuildDataPermalinks() + { + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $feedBuilder->setUsePermalinks(true); + $data = $feedBuilder->buildData(); + $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); + $this->assertTrue($data['usepermalinks']); + // First link is a permalink + $link = array_shift($data['links']); + $this->assertEquals('20150310_114651', $link['linkdate']); + $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); + $this->assertEquals('http://host.tld/?WDWyig', $link['url']); + $this->assertContains('Direct link', $link['description']); + $this->assertContains('http://host.tld/?WDWyig', $link['description']); + // Second link is a direct link + $link = array_shift($data['links']); + $this->assertEquals('20150310_114633', $link['linkdate']); + $this->assertEquals('http://host.tld/?kLHmZg', $link['guid']); + $this->assertEquals('https://static.fsf.org/nosvn/faif-2.0.pdf', $link['url']); + $this->assertContains('Direct link', $link['description']); + $this->assertContains('https://static.fsf.org/nosvn/faif-2.0.pdf', $link['description']); + } + + /** + * Test buildData with hide dates settings. + */ + public function testBuildDataHideDates() + { + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $feedBuilder->setHideDates(true); + $data = $feedBuilder->buildData(); + $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); + $this->assertFalse($data['show_dates']); + + // Show dates while logged in + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, true); + $feedBuilder->setLocale(self::$LOCALE); + $feedBuilder->setHideDates(true); + $data = $feedBuilder->buildData(); + $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); + $this->assertTrue($data['show_dates']); + } + + /** + * Test buildData with hide dates settings. + */ + public function testBuildDataPubsubhub() + { + $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, null, false); + $feedBuilder->setLocale(self::$LOCALE); + $feedBuilder->setPubsubhubUrl('http://pubsubhub.io'); + $data = $feedBuilder->buildData(); + $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); + $this->assertEquals('http://pubsubhub.io', $data['pubsubhub_url']); + } +} diff --git a/tests/LinkFilterTest.php b/tests/LinkFilterTest.php index ef1cc10a..f991a9c9 100644 --- a/tests/LinkFilterTest.php +++ b/tests/LinkFilterTest.php @@ -12,8 +12,6 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase */ protected static $linkFilter; - protected static $NB_LINKS_REFDB = 7; - /** * Instanciate linkFilter with ReferenceLinkDB data. */ @@ -29,7 +27,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase public function testFilter() { $this->assertEquals( - self::$NB_LINKS_REFDB, + ReferenceLinkDB::$NB_LINKS_TOTAL, count(self::$linkFilter->filter('', '')) ); @@ -40,12 +38,12 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase ); $this->assertEquals( - self::$NB_LINKS_REFDB, + ReferenceLinkDB::$NB_LINKS_TOTAL, count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, '')) ); $this->assertEquals( - self::$NB_LINKS_REFDB, + ReferenceLinkDB::$NB_LINKS_TOTAL, count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '')) ); } @@ -383,7 +381,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase )) ); $this->assertEquals( - self::$NB_LINKS_REFDB, + ReferenceLinkDB::$NB_LINKS_TOTAL, count(self::$linkFilter->filter( LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, '' diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php index 61faef05..dc4f5dfa 100644 --- a/tests/utils/ReferenceLinkDB.php +++ b/tests/utils/ReferenceLinkDB.php @@ -4,6 +4,8 @@ */ class ReferenceLinkDB { + public static $NB_LINKS_TOTAL = 7; + private $_links = array(); private $_publicCount = 0; private $_privateCount = 0; @@ -13,6 +15,15 @@ class ReferenceLinkDB */ function __construct() { + $this->addLink( + 'Link title: @website', + '?WDWyig', + 'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this.', + 0, + '20150310_114651', + 'stuff' + ); + $this->addLink( 'Free as in Freedom 2.0 @website', 'https://static.fsf.org/nosvn/faif-2.0.pdf', @@ -22,15 +33,6 @@ class ReferenceLinkDB 'free gnu software stallman -exclude stuff' ); - $this->addLink( - 'Link title: @website', - 'local', - 'Stallman has a beard and is part of the Free Software Foundation (or not). Seriously, read this.', - 0, - '20150310_114651', - 'stuff' - ); - $this->addLink( 'MediaGoblin', 'http://mediagoblin.org/',