diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2013-09-27 20:03:00 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2013-09-27 20:03:16 +0200 |
commit | d6066c382083dedf426abbfd5f2f1df725c68aaf (patch) | |
tree | 4406388c5a827ebe8ed62234e11e49c35e16f3a5 /tests/unit/utility | |
parent | 30080c220a3f5013875d6a52e4dfe634719cbeca (diff) |
use seperate direcotires for article enhancers and fetchers
Diffstat (limited to 'tests/unit/utility')
-rw-r--r-- | tests/unit/utility/FeedFetcherTest.php | 392 | ||||
-rw-r--r-- | tests/unit/utility/FetcherTest.php | 108 | ||||
-rw-r--r-- | tests/unit/utility/articleenhancer/EnhancerTest.php | 91 | ||||
-rw-r--r-- | tests/unit/utility/articleenhancer/RegexArticleEnhancerTest.php | 49 | ||||
-rw-r--r-- | tests/unit/utility/articleenhancer/XPathArticleEnhancerTest.php | 288 |
5 files changed, 0 insertions, 928 deletions
diff --git a/tests/unit/utility/FeedFetcherTest.php b/tests/unit/utility/FeedFetcherTest.php deleted file mode 100644 index 3865bda9f..000000000 --- a/tests/unit/utility/FeedFetcherTest.php +++ /dev/null @@ -1,392 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Cosentino -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Utility; - -use \OCA\News\Db\Item; -use \OCA\News\Db\Feed; - -require_once(__DIR__ . "/../../classloader.php"); - - -class FeedFetcherTest extends \OCA\AppFramework\Utility\TestUtility { - - private $fetcher; - private $core; - private $coreFactory; - private $faviconFetcher; - private $url; - private $cacheDirectory; - private $cacheDuration; - private $time; - private $item; - private $purifier; - private $fetchTimeout; - - // items - private $permalink; - private $title; - private $guid; - private $pub; - private $body; - private $author; - private $authorMail; - private $enclosureLink; - - // feed - private $feedTitle; - private $feedLink; - private $feedImage; - private $webFavicon; - - protected function setUp(){ - $this->core = $this->getMockBuilder( - '\SimplePie_Core') - ->disableOriginalConstructor() - ->getMock(); - $this->coreFactory = $this->getMockBuilder( - '\OCA\AppFramework\Utility\SimplePieAPIFactory') - ->disableOriginalConstructor() - ->getMock(); - $this->coreFactory->expects($this->any()) - ->method('getCore') - ->will($this->returnValue($this->core)); - $this->item = $this->getMockBuilder( - '\SimplePie_Item') - ->disableOriginalConstructor() - ->getMock(); - $this->faviconFetcher = $this->getMockBuilder( - '\OCA\AppFramework\Utility\FaviconFetcher') - ->disableOriginalConstructor() - ->getMock(); - $this->purifier = $this->getMock('purifier', array('purify')); - $this->time = 2323; - $timeFactory = $this->getMockBuilder( - '\OCA\AppFramework\Utility\TimeFactory') - ->disableOriginalConstructor() - ->getMock(); - $timeFactory->expects($this->any()) - ->method('getTime') - ->will($this->returnValue($this->time)); - $this->cacheDuration = 100; - $this->cacheDirectory = 'dir/'; - $this->fetchTimeout = 40; - $this->fetcher = new FeedFetcher($this->getAPIMock(), - $this->coreFactory, - $this->faviconFetcher, - $timeFactory, - $this->cacheDirectory, - $this->cacheDuration, - $this->fetchTimeout, - $this->purifier); - $this->url = 'http://tests'; - - $this->permalink = 'http://permalink'; - $this->title = 'my&lt;' title'; - $this->guid = 'hey guid here'; - $this->body = 'let the bodies hit the floor <a href="test">test</a>'; - $this->body2 = 'let the bodies hit the floor <a target="_blank" href="test">test</a>'; - $this->pub = 23111; - $this->author = '<boogieman'; - $this->enclosureLink = 'http://enclosure.you'; - - $this->feedTitle = '<e;its a title'; - $this->feedLink = 'http://goatse'; - $this->feedImage = '/an/image'; - $this->webFavicon = 'http://anon.google.com'; - $this->authorMail = 'doe@joes.com'; - } - - - public function testCanHandle(){ - $url = 'google.de'; - - $this->assertTrue($this->fetcher->canHandle($url)); - } - - - public function testFetchThrowsExceptionWhenInitFailed() { - $this->core->expects($this->once()) - ->method('set_feed_url') - ->with($this->equalTo($this->url)); - $this->core->expects($this->once()) - ->method('enable_cache') - ->with($this->equalTo(true)); - $this->core->expects($this->once()) - ->method('set_timeout') - ->with($this->equalTo($this->fetchTimeout)); - $this->core->expects($this->once()) - ->method('set_cache_location') - ->with($this->equalTo($this->cacheDirectory)); - $this->core->expects($this->once()) - ->method('set_cache_duration') - ->with($this->equalTo($this->cacheDuration)); - $this->setExpectedException('\OCA\News\Utility\FetcherException'); - $this->fetcher->fetch($this->url); - } - - - public function testShouldCatchExceptionsAndThrowOwnException() { - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - $this->core->expects($this->once()) - ->method('get_items') - ->will($this->throwException(new \Exception('oh noes!'))); - $this->setExpectedException('\OCA\News\Utility\FetcherException'); - $this->fetcher->fetch($this->url); - } - - - private function expectCore($method, $return) { - $this->core->expects($this->once()) - ->method($method) - ->will($this->returnValue($return)); - } - - private function expectItem($method, $return) { - $this->item->expects($this->once()) - ->method($method) - ->will($this->returnValue($return)); - } - - - private function createItem($author=false, $enclosureType=null, $noPubDate=false) { - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo($this->body)) - ->will($this->returnValue($this->body)); - $this->expectItem('get_permalink', $this->permalink); - $this->expectItem('get_title', $this->title); - $this->expectItem('get_id', $this->guid); - $this->expectItem('get_content', $this->body); - - $item = new Item(); - - if($noPubDate) { - $this->expectItem('get_date', 0); - $item->setPubDate($this->time); - } else { - $this->expectItem('get_date', $this->pub); - $item->setPubDate($this->pub); - } - - $item->setStatus(0); - $item->setUnread(); - $item->setUrl($this->permalink); - $item->setTitle('my<\' title'); - $item->setGuid($this->guid); - $item->setGuidHash(md5($this->guid)); - $item->setBody($this->body2); - $item->setLastModified($this->time); - if($author) { - $mock = $this->getMock('author', array('get_name')); - $mock->expects($this->once()) - ->method('get_name') - ->will($this->returnValue($this->author)); - $this->expectItem('get_author', $mock); - $item->setAuthor(html_entity_decode($this->author)); - } else { - $mock = $this->getMock('author', array('get_name', 'get_email')); - $mock->expects($this->any()) - ->method('get_name') - ->will($this->returnValue('')); - $mock->expects($this->any()) - ->method('get_email') - ->will($this->returnValue($this->authorMail)); - - $this->expectItem('get_author', $mock); - $item->setAuthor(html_entity_decode($this->authorMail)); - } - - if($enclosureType === 'audio/ogg') { - $mock = $this->getMock('enclosure', array('get_type', 'get_link')); - $mock->expects($this->any()) - ->method('get_type') - ->will($this->returnValue($enclosureType)); - $this->expectItem('get_enclosure', $this->mock); - $item->setEnclosureMime($enclosureType); - $item->setEnclosureLink($this->enclosureLink); - } - return $item; - } - - - private function createFeed($hasFeedFavicon=false, $hasWebFavicon=false) { - $this->expectCore('get_title', $this->feedTitle); - $this->expectCore('get_permalink', $this->feedLink); - - $feed = new Feed(); - $feed->setTitle(html_entity_decode($this->feedTitle)); - $feed->setUrl($this->url); - $feed->setLink($this->feedLink); - $feed->setAdded($this->time); - - if($hasWebFavicon) { - $this->faviconFetcher->expects($this->once()) - ->method('fetch') - ->with($this->equalTo($this->feedLink)) - ->will($this->returnValue($this->webFavicon)); - $feed->setFaviconLink($this->webFavicon); - } - - if($hasFeedFavicon) { - $this->expectCore('get_image_url', $this->feedImage); - $feed->setFaviconLink($this->feedImage); - } elseif(!$hasWebFavicon) { - $feed->setFaviconLink(null); - $this->expectCore('get_image_url', null); - } - - - return $feed; - } - - - public function testFetchMapItems(){ - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - $item = $this->createItem(); - $feed = $this->createFeed(); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url); - - $this->assertEquals(array($feed, array($item)), $result); - } - - - public function testFetchMapItemsNoFeedTitleUsesUrl(){ - $this->expectCore('get_title', ''); - $this->expectCore('get_permalink', $this->feedLink); - - $feed = new Feed(); - $feed->setTitle($this->url); - $feed->setUrl($this->url); - $feed->setLink($this->feedLink); - $feed->setAdded($this->time); - $feed->setFaviconLink(null); - - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - $item = $this->createItem(); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url); - - $this->assertEquals(array($feed, array($item)), $result); - } - - public function testFetchMapItemsAuthorExists(){ - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - $item = $this->createItem(true); - $feed = $this->createFeed(true); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url); - - $this->assertEquals(array($feed, array($item)), $result); - } - - - public function testFetchMapItemsEnclosureExists(){ - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - $item = $this->createItem(false, true); - $feed = $this->createFeed(false, true); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url); - - $this->assertEquals(array($feed, array($item)), $result); - } - - - public function testFetchMapItemsNoPubdate(){ - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - $item = $this->createItem(false, true, true); - $feed = $this->createFeed(false, true); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url); - - $this->assertEquals(array($feed, array($item)), $result); - } - - - public function testFetchMapItemsGetFavicon() { - $this->expectCore('get_title', $this->feedTitle); - $this->expectCore('get_permalink', $this->feedLink); - - $feed = new Feed(); - $feed->setTitle(html_entity_decode($this->feedTitle)); - $feed->setUrl($this->url); - $feed->setLink($this->feedLink); - $feed->setAdded($this->time); - $feed->setFaviconLink($this->webFavicon); - - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - - $this->faviconFetcher->expects($this->once()) - ->method('fetch') - ->will($this->returnValue($this->webFavicon)); - - $item = $this->createItem(false, true); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url /*, true*/); - - $this->assertEquals(array($feed, array($item)), $result); - } - - public function testFetchMapItemsNoGetFavicon() { - $this->expectCore('get_title', $this->feedTitle); - $this->expectCore('get_permalink', $this->feedLink); - - $feed = new Feed(); - $feed->setTitle(html_entity_decode($this->feedTitle)); - $feed->setUrl($this->url); - $feed->setLink($this->feedLink); - $feed->setAdded($this->time); - - $this->core->expects($this->once()) - ->method('init') - ->will($this->returnValue(true)); - - $this->faviconFetcher->expects($this->never()) - ->method('fetch'); - - $item = $this->createItem(false, true); - $this->expectCore('get_items', array($this->item)); - $result = $this->fetcher->fetch($this->url, false); - - $this->assertEquals(array($feed, array($item)), $result); - } - - -} diff --git a/tests/unit/utility/FetcherTest.php b/tests/unit/utility/FetcherTest.php deleted file mode 100644 index 8a57c9193..000000000 --- a/tests/unit/utility/FetcherTest.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Cosentino -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Utility; - -require_once(__DIR__ . "/../../classloader.php"); - - -class FetcherTest extends \OCA\AppFramework\Utility\TestUtility { - - private $fetcher; - - protected function setUp(){ - $this->fetcher = new Fetcher(); - } - - - public function testFetch(){ - $url = 'hi'; - $mockFetcher = $this->getMockBuilder('\OCA\News\Utility\IFeedFetcher') - ->disableOriginalConstructor() - ->getMock(); - $mockFetcher->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($url)) - ->will($this->returnValue(true)); - $this->fetcher->registerFetcher($mockFetcher); - - $this->fetcher->fetch($url); - } - - - public function testMultipleFetchers(){ - $url = 'hi'; - $mockFetcher = $this->getMockBuilder('\OCA\News\Utility\IFeedFetcher') - ->disableOriginalConstructor() - ->getMock(); - $mockFetcher->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($url)) - ->will($this->returnValue(false)); - $mockFetcher2 = $this->getMockBuilder('\OCA\News\Utility\IFeedFetcher') - ->disableOriginalConstructor() - ->getMock(); - $mockFetcher2->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($url)) - ->will($this->returnValue(true)); - - $this->fetcher->registerFetcher($mockFetcher); - $this->fetcher->registerFetcher($mockFetcher2); - - $this->fetcher->fetch($url); - } - - - public function testMultipleFetchersOnlyOneShouldHandle(){ - $url = 'hi'; - $return = 'zeas'; - $mockFetcher = $this->getMockBuilder('\OCA\News\Utility\IFeedFetcher') - ->disableOriginalConstructor() - ->getMock(); - $mockFetcher->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($url)) - ->will($this->returnValue(true)); - $mockFetcher->expects($this->once()) - ->method('fetch') - ->with($this->equalTo($url)) - ->will($this->returnValue($return)); - $mockFetcher2 = $this->getMockBuilder('\OCA\News\Utility\IFeedFetcher') - ->disableOriginalConstructor() - ->getMock(); - $mockFetcher2->expects($this->never()) - ->method('canHandle'); - - $this->fetcher->registerFetcher($mockFetcher); - $this->fetcher->registerFetcher($mockFetcher2); - - $result = $this->fetcher->fetch($url); - - $this->assertEquals($return, $result); - } - - -}
\ No newline at end of file diff --git a/tests/unit/utility/articleenhancer/EnhancerTest.php b/tests/unit/utility/articleenhancer/EnhancerTest.php deleted file mode 100644 index 769538740..000000000 --- a/tests/unit/utility/articleenhancer/EnhancerTest.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Cosentino -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Utility\ArticleEnhancer; - -use \OCA\News\Db\Item; - -require_once(__DIR__ . "/../../../classloader.php"); - - -class EnhancerTest extends \OCA\AppFramework\Utility\TestUtility { - - private $enhancer; - private $articleEnhancer; - private $articleEnhancer2; - - protected function setUp(){ - $this->enhancer = new Enhancer(); - $this->articleEnhancer = $this->getMockBuilder( - '\OCA\News\Utility\ArticleEnhancer\ArticleEnhancer') - ->disableOriginalConstructor() - ->getMock(); - $this->enhancer->registerEnhancer('test.com', $this->articleEnhancer); - } - - - public function testEnhanceSetsCorrectHash(){ - $item = new Item(); - $item->setUrl('hi'); - $urls = array( - 'https://test.com', - 'https://www.test.com', - 'https://test.com/', - 'http://test.com', - 'http://test.com/', - 'http://www.test.com' - ); - for ($i=0; $i < count($urls); $i++) { - $url = $urls[$i]; - $this->articleEnhancer->expects($this->at($i)) - ->method('enhance') - ->with($this->equalTo($item)) - ->will($this->returnValue($item)); - } - - for ($i=0; $i < count($urls); $i++) { - $url = $urls[$i]; - $result = $this->enhancer->enhance($item, $url); - $this->assertEquals($item, $result); - } - - } - - - public function testNotMatchShouldJustReturnItem() { - $item = new Item(); - $item->setUrl('hi'); - - $url = 'https://tests.com'; - $this->articleEnhancer->expects($this->never()) - ->method('enhance'); - - $result = $this->enhancer->enhance($item, $url); - $this->assertEquals($item, $result); - - } - - -}
\ No newline at end of file diff --git a/tests/unit/utility/articleenhancer/RegexArticleEnhancerTest.php b/tests/unit/utility/articleenhancer/RegexArticleEnhancerTest.php deleted file mode 100644 index f775eac91..000000000 --- a/tests/unit/utility/articleenhancer/RegexArticleEnhancerTest.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Cosentino -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Utility\ArticleEnhancer; - -use \OCA\News\Db\Item; - -require_once(__DIR__ . "/../../../classloader.php"); - - -class RegexArticleEnhancerTest extends \OCA\AppFramework\Utility\TestUtility { - - - public function testRegexEnhancer() { - $item = new Item(); - $item->setBody('atests is a nice thing'); - $item->setUrl('http://john.com'); - $regex = array("%tes(ts)%" => "heho$1tests"); - - $regexEnhancer = new RegexArticleEnhancer('%john.com%', $regex); - $item = $regexEnhancer->enhance($item); - - $this->assertEquals('ahehotstests is a nice thing', $item->getBody()); - } - - -}
\ No newline at end of file diff --git a/tests/unit/utility/articleenhancer/XPathArticleEnhancerTest.php b/tests/unit/utility/articleenhancer/XPathArticleEnhancerTest.php deleted file mode 100644 index b9c902147..000000000 --- a/tests/unit/utility/articleenhancer/XPathArticleEnhancerTest.php +++ /dev/null @@ -1,288 +0,0 @@ -<?php - -/** -* ownCloud - News -* -* @author Alessandro Cosentino -* @author Bernhard Posselt -* @copyright 2012 Alessandro Cosentino cosenal@gmail.com -* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -namespace OCA\News\Utility\ArticleEnhancer; - -use \OCA\News\Db\Item; - -require_once(__DIR__ . "/../../../classloader.php"); - - -class XPathArticleEnhancerTest extends \OCA\AppFramework\Utility\TestUtility { - - private $purifier; - private $testEnhancer; - private $fileFactory; - private $timeout; - - protected function setUp() { - $timeout = 30; - $this->fileFactory = $this->getMockBuilder('\OCA\News\Utility\SimplePieFileFactory') - ->disableOriginalConstructor() - ->getMock(); - $this->purifier = $this->getMock('purifier', array('purify')); - - $this->testEnhancer = new XPathArticleEnhancer( - $this->purifier, - $this->fileFactory, - array( - '/explosm.net\/comics/' => '//*[@id=\'maincontent\']/div[2]/div/span', - '/explosm.net\/shorts/' => '//*[@id=\'maincontent\']/div/div', - '/explosm.net\/all/' => '//body/*', - '/themerepublic.net/' => '//*[@class=\'post hentry\']' - ), - $this->timeout - ); - } - - - public function testDoesNotModifiyNotMatchingResults() { - $item = new Item(); - $item->setUrl('http://explosm.net'); - $this->assertEquals($item, $this->testEnhancer->enhance($item)); - } - - - public function testDoesModifiyArticlesThatMatch() { - $file = new \stdClass; - $file->headers = array("content-type"=>"text/html; charset=utf-8"); - $file->body = '<html> - <body> - <div id="maincontent"> - <div>nooo</div> - <div><div><span>hiho</span></div></div> - </div> - </body> - </html>'; - $item = new Item(); - $item->setUrl('https://www.explosm.net/comics/312'); - $item->setBody('Hello thar'); - - $this->fileFactory->expects($this->once()) - ->method('getFile') - ->with($this->equalTo($item->getUrl()), - $this->equalTo($this->timeout)) - ->will($this->returnValue($file)); - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo('<span>hiho</span>')) - ->will($this->returnValue('<span>hiho</span>')); - - $result = $this->testEnhancer->enhance($item); - $this->assertEquals('<span>hiho</span>', $result->getBody()); - } - - - public function testDoesModifiyAllArticlesThatMatch() { - $file = new \stdClass; - $file->headers = array("content-type"=>"text/html; charset=utf-8"); - $file->body = '<html> - <body> - <div id="maincontent"> - <div>nooo<div>hiho</div></div> - <div><div>rawr</div></div> - </div> - </body> - </html>'; - $item = new Item(); - $item->setUrl('https://www.explosm.net/shorts/312'); - $item->setBody('Hello thar'); - - $this->fileFactory->expects($this->once()) - ->method('getFile') - ->with($this->equalTo($item->getUrl()), - $this->equalTo($this->timeout)) - ->will($this->returnValue($file)); - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo('<div>hiho</div><div>rawr</div>')) - ->will($this->returnValue('<div>hiho</div><div>rawr</div>')); - - $result = $this->testEnhancer->enhance($item); - $this->assertEquals('<div>hiho</div><div>rawr</div>', $result->getBody()); - } - - - public function testModificationHandlesEmptyResults() { - $file = new \stdClass; - $file->headers = array("content-type"=>"text/html; charset=utf-8"); - $file->body = '<html> - <body> - <div id="maincontent"> - </div> - </body> - </html>'; - $item = new Item(); - $item->setUrl('https://www.explosm.net/comics/312'); - $item->setBody('Hello thar'); - - $this->fileFactory->expects($this->once()) - ->method('getFile') - ->with($this->equalTo($item->getUrl()), - $this->equalTo($this->timeout)) - ->will($this->returnValue($file)); - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo(null)) - ->will($this->returnValue(null)); - - $result = $this->testEnhancer->enhance($item); - $this->assertEquals(null, $result->getBody()); - } - - - public function testModificationDoesNotBreakOnEmptyDom() { - $file = new \stdClass; - $file->headers = array("content-type"=>"text/html; charset=utf-8"); - $file->body = ''; - $item = new Item(); - $item->setUrl('https://www.explosm.net/comics/312'); - $item->setBody('Hello thar'); - - $this->fileFactory->expects($this->once()) - ->method('getFile') - ->with($this->equalTo($item->getUrl()), - $this->equalTo($this->timeout)) - ->will($this->returnValue($file)); - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo(null)) - ->will($this->returnValue(null)); - - $result = $this->testEnhancer->enhance($item); - $this->assertEquals(null, $result->getBody()); - } - - - public function testModificationDoesNotBreakOnBrokenDom() { - $file = new \stdClass; - $file->headers = array("content-type"=>"text/html; charset=utf-8"); - $file->body = '<html/><p> - <body> - <div id="maincontent"> - </div> - </body> - </html>'; - $item = new Item(); - $item->setUrl('https://www.explosm.net/comics/312'); - $item->setBody('Hello thar'); - - $this->fileFactory->expects($this->once()) - ->method('getFile') - ->with($this->equalTo($item->getUrl()), - $this->equalTo($this->timeout)) - ->will($this->returnValue($file)); - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo(null)) - ->will($this->returnValue(null)); - - $result = $this->testEnhancer->enhance($item); - $this->assertEquals(null, $result->getBody()); - } - - - public function testTransformRelativeUrls() { - $file = new \stdClass; - $file->headers = array("content-type"=>"text/html; charset=utf-8"); - $file->body = '<html> - <body> - <a href="../a/relative/url.html?a=1#b">link</a> - <a href="b/relative/url.html">link2</a> - <img src="/an |