From 2f67340e551b12dce8824381c3291bb2137857cb Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 28 Aug 2013 19:19:28 +0200 Subject: Possible backwards incompatible change by using the link provided by simplepie instead of the user for the url hash. This prevents duplication of the feed when adding a slightly different feed url which points to the same feed and allows a speedup from O(n) to O(1) for article enhanchers --- tests/unit/businesslayer/FeedBusinessLayerTest.php | 28 +++++--- tests/unit/utility/FeedFetcherTest.php | 16 ++--- .../articleenhancer/ArticleEnhancerTest.php | 6 +- .../articleenhancer/DefaultEnhancerTest.php | 54 --------------- .../unit/utility/articleenhancer/EnhancerTest.php | 78 +++++++++------------- 5 files changed, 58 insertions(+), 124 deletions(-) delete mode 100644 tests/unit/utility/articleenhancer/DefaultEnhancerTest.php (limited to 'tests/unit') diff --git a/tests/unit/businesslayer/FeedBusinessLayerTest.php b/tests/unit/businesslayer/FeedBusinessLayerTest.php index 7a4cf24e6..220b1c980 100644 --- a/tests/unit/businesslayer/FeedBusinessLayerTest.php +++ b/tests/unit/businesslayer/FeedBusinessLayerTest.php @@ -105,10 +105,6 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { $this->api->expects($this->once()) ->method('getTrans') ->will($this->returnValue($trans)); - $this->feedMapper->expects($this->once()) - ->method('findByUrlHash') - ->with($this->equalTo(md5($url)), $this->equalTo($this->user)) - ->will($this->throwException(new DoesNotExistException('yo'))); $this->fetcher->expects($this->once()) ->method('fetch') ->with($this->equalTo($url)) @@ -123,6 +119,8 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { $createdFeed = new Feed(); $ex = new DoesNotExistException('yo'); $createdFeed->setUrl($url); + $createdFeed->setUrlHash('hsssi'); + $createdFeed->setLink($url); $item1 = new Item(); $item1->setGuidHash('hi'); $item2 = new Item(); @@ -134,7 +132,7 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { $this->feedMapper->expects($this->once()) ->method('findByUrlHash') - ->with($this->equalTo(md5($url)), $this->equalTo($this->user)) + ->with($this->equalTo($createdFeed->getUrlHash()), $this->equalTo($this->user)) ->will($this->throwException($ex)); $this->fetcher->expects($this->once()) ->method('fetch') @@ -153,7 +151,8 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { ->will($this->throwException($ex)); $this->enhancer->expects($this->at(0)) ->method('enhance') - ->with($this->equalTo($return[1][1])) + ->with($this->equalTo($return[1][1]), + $this->equalTo($url)) ->will($this->returnValue($return[1][1])); $this->itemMapper->expects($this->at(1)) ->method('insert') @@ -167,7 +166,8 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { ->will($this->throwException($ex)); $this->enhancer->expects($this->at(1)) ->method('enhance') - ->with($this->equalTo($return[1][0])) + ->with($this->equalTo($return[1][0]), + $this->equalTo($url)) ->will($this->returnValue($return[1][0])); $this->itemMapper->expects($this->at(3)) ->method('insert') @@ -183,9 +183,11 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { public function testCreateItemGuidExistsAlready(){ $url = 'http://test'; $folderId = 10; - $createdFeed = new Feed(); $ex = new DoesNotExistException('yo'); + $createdFeed = new Feed(); $createdFeed->setUrl($url); + $createdFeed->setUrlHash($url); + $createdFeed->setLink($url); $item1 = new Item(); $item1->setGuidHash('hi'); $item2 = new Item(); @@ -197,7 +199,8 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { $this->feedMapper->expects($this->once()) ->method('findByUrlHash') - ->with($this->equalTo(md5($url)), $this->equalTo($this->user)) + ->with($this->equalTo($createdFeed->getUrlHash()), + $this->equalTo($this->user)) ->will($this->throwException($ex)); $this->fetcher->expects($this->once()) ->method('fetch') @@ -216,7 +219,8 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { ->will($this->throwException($ex)); $this->enhancer->expects($this->at(0)) ->method('enhance') - ->with($this->equalTo($return[1][1])) + ->with($this->equalTo($return[1][1]), + $this->equalTo($url)) ->will($this->returnValue($return[1][1])); $this->itemMapper->expects($this->at(1)) ->method('insert') @@ -240,6 +244,7 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { $feed = new Feed(); $feed->setId(3); $feed->getUrl('test'); + $feed->setUrlHash('yo'); $item = new Item(); $item->setGuidHash(md5('hi')); @@ -268,7 +273,8 @@ class FeedBusinessLayerTest extends \OCA\AppFramework\Utility\TestUtility { ->will($this->throwException($ex)); $this->enhancer->expects($this->at(0)) ->method('enhance') - ->with($this->equalTo($items[0])) + ->with($this->equalTo($items[0]), + $this->equalTo($feed->getUrl())) ->will($this->returnValue($items[0])); $this->itemMapper->expects($this->once()) ->method('insert') diff --git a/tests/unit/utility/FeedFetcherTest.php b/tests/unit/utility/FeedFetcherTest.php index eab57c3b4..af9de69e5 100644 --- a/tests/unit/utility/FeedFetcherTest.php +++ b/tests/unit/utility/FeedFetcherTest.php @@ -236,13 +236,13 @@ class FeedFetcherTest extends \OCA\AppFramework\Utility\TestUtility { private function createFeed($hasFeedFavicon=false, $hasWebFavicon=false) { $this->expectCore('get_title', $this->feedTitle); - $this->expectCore('get_link', $this->feedLink); + $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->setUrlHash(md5($this->url)); + $feed->setUrlHash(md5($this->feedLink)); $feed->setAdded($this->time); if($hasWebFavicon) { @@ -281,13 +281,13 @@ class FeedFetcherTest extends \OCA\AppFramework\Utility\TestUtility { public function testFetchMapItemsNoFeedTitleUsesUrl(){ $this->expectCore('get_title', ''); - $this->expectCore('get_link', $this->feedLink); + $this->expectCore('get_permalink', $this->feedLink); $feed = new Feed(); $feed->setTitle($this->url); $feed->setUrl($this->url); $feed->setLink($this->feedLink); - $feed->setUrlHash(md5($this->url)); + $feed->setUrlHash(md5($this->feedLink)); $feed->setAdded($this->time); $feed->setFaviconLink(null); @@ -342,13 +342,13 @@ class FeedFetcherTest extends \OCA\AppFramework\Utility\TestUtility { public function testFetchMapItemsGetFavicon() { $this->expectCore('get_title', $this->feedTitle); - $this->expectCore('get_link', $this->feedLink); + $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->setUrlHash(md5($this->url)); + $feed->setUrlHash(md5($this->feedLink)); $feed->setAdded($this->time); $feed->setFaviconLink($this->webFavicon); @@ -369,13 +369,13 @@ class FeedFetcherTest extends \OCA\AppFramework\Utility\TestUtility { public function testFetchMapItemsNoGetFavicon() { $this->expectCore('get_title', $this->feedTitle); - $this->expectCore('get_link', $this->feedLink); + $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->setUrlHash(md5($this->url)); + $feed->setUrlHash(md5($this->feedLink)); $feed->setAdded($this->time); $this->core->expects($this->once()) diff --git a/tests/unit/utility/articleenhancer/ArticleEnhancerTest.php b/tests/unit/utility/articleenhancer/ArticleEnhancerTest.php index 8d507c0f8..c808a0e49 100644 --- a/tests/unit/utility/articleenhancer/ArticleEnhancerTest.php +++ b/tests/unit/utility/articleenhancer/ArticleEnhancerTest.php @@ -63,10 +63,10 @@ class ArticleEnhancerTest extends \OCA\AppFramework\Utility\TestUtility { } - public function testCanHandle() { + public function testDoesNotModifiyNotMatchingResults() { $item = new Item(); - $item->setUrl('http://explosm.net/comics'); - $this->assertTrue($this->testEnhancer->canHandle($item)); + $item->setUrl('http://explosm.net'); + $this->assertEquals($item, $this->testEnhancer->enhance($item)); } diff --git a/tests/unit/utility/articleenhancer/DefaultEnhancerTest.php b/tests/unit/utility/articleenhancer/DefaultEnhancerTest.php deleted file mode 100644 index 901428616..000000000 --- a/tests/unit/utility/articleenhancer/DefaultEnhancerTest.php +++ /dev/null @@ -1,54 +0,0 @@ -. -* -*/ - -namespace OCA\News\Utility\ArticleEnhancer; - -use \OCA\News\Db\Item; - -require_once(__DIR__ . "/../../../classloader.php"); - - -class DefaultEnhancerTest extends \OCA\AppFramework\Utility\TestUtility { - - private $testEnhancer; - - protected function setUp() { - $this->testEnhancer = new DefaultEnhancer(); - } - - - public function testCanHandle() { - $item = new Item(); - $this->assertTrue($this->testEnhancer->canHandle($item)); - } - - - public function testEnhance() { - $item = new Item(); - $this->assertEquals($item, $this->testEnhancer->enhance($item)); - } - - -} \ No newline at end of file diff --git a/tests/unit/utility/articleenhancer/EnhancerTest.php b/tests/unit/utility/articleenhancer/EnhancerTest.php index 559722e60..769538740 100644 --- a/tests/unit/utility/articleenhancer/EnhancerTest.php +++ b/tests/unit/utility/articleenhancer/EnhancerTest.php @@ -42,67 +42,49 @@ class EnhancerTest extends \OCA\AppFramework\Utility\TestUtility { '\OCA\News\Utility\ArticleEnhancer\ArticleEnhancer') ->disableOriginalConstructor() ->getMock(); - $this->articleEnhancer2 = $this->getMockBuilder( - '\OCA\News\Utility\ArticleEnhancer\ArticleEnhancer') - ->disableOriginalConstructor() - ->getMock(); + $this->enhancer->registerEnhancer('test.com', $this->articleEnhancer); } - public function testFetch(){ + 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); + } - $this->articleEnhancer->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($item)) - ->will($this->returnValue(true)); - $this->enhancer->registerEnhancer($this->articleEnhancer); - - $this->enhancer->enhance($item); } - public function testMultipleFetchers(){ + public function testNotMatchShouldJustReturnItem() { $item = new Item(); $item->setUrl('hi'); - $this->articleEnhancer->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($item)) - ->will($this->returnValue(false)); - $this->articleEnhancer2->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($item)) - ->will($this->returnValue(true)); - - $this->enhancer->registerEnhancer($this->articleEnhancer); - $this->enhancer->registerEnhancer($this->articleEnhancer2); - - $this->enhancer->enhance($item); - } + $url = 'https://tests.com'; + $this->articleEnhancer->expects($this->never()) + ->method('enhance'); - public function testMultipleFetchersOnlyOneShouldHandle(){ - $item = new Item(); - $item->setUrl('hi'); - $return = 'zeas'; - $this->articleEnhancer->expects($this->once()) - ->method('canHandle') - ->with($this->equalTo($item)) - ->will($this->returnValue(true)); - $this->articleEnhancer->expects($this->once()) - ->method('enhance') - ->with($this->equalTo($item)) - ->will($this->returnValue($return)); - $this->articleEnhancer2->expects($this->never()) - ->method('canHandle'); - - $this->enhancer->registerEnhancer($this->articleEnhancer); - $this->enhancer->registerEnhancer($this->articleEnhancer2); - - $result = $this->enhancer->enhance($item); - - $this->assertEquals($return, $result); + $result = $this->enhancer->enhance($item, $url); + $this->assertEquals($item, $result); + } -- cgit v1.2.3