From 42d69a95f3276a2d6089ca68f635c4e2f6aa7a23 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Tue, 21 Oct 2014 16:45:36 +0200 Subject: convert tabs indention to indention with 4 spaces because of mixing of both variants in code and better readability on github and websites because you cant set the indention width there and 8 spaces will be used for a tab --- tests/unit/service/FeedServiceTest.php | 1386 +++++++++++++++--------------- tests/unit/service/FolderServiceTest.php | 444 +++++----- tests/unit/service/ItemServiceTest.php | 696 +++++++-------- tests/unit/service/ServiceTest.php | 98 +-- tests/unit/service/StatusFlagTest.php | 48 +- 5 files changed, 1336 insertions(+), 1336 deletions(-) (limited to 'tests/unit/service') diff --git a/tests/unit/service/FeedServiceTest.php b/tests/unit/service/FeedServiceTest.php index cc8d3018e..f7c804ec5 100644 --- a/tests/unit/service/FeedServiceTest.php +++ b/tests/unit/service/FeedServiceTest.php @@ -24,699 +24,699 @@ use \OCA\News\Fetcher\FetcherException; class FeedServiceTest extends \PHPUnit_Framework_TestCase { - private $feedMapper; - private $feedService; - private $user; - private $response; - private $fetcher; - private $itemMapper; - private $threshold; - private $time; - private $importParser; - private $autoPurgeMinimumInterval; - private $enhancer; - private $purifier; - private $l10n; - private $logger; - private $loggerParams; - - protected function setUp(){ - $this->logger = $this->getMockBuilder( - '\OCP\ILogger') - ->disableOriginalConstructor() - ->getMock(); - $this->loggerParams = ['hi']; - $this->time = 222; - $this->autoPurgeMinimumInterval = 10; - $timeFactory = $this->getMock('TimeFactory', ['getTime']); - $timeFactory->expects($this->any()) - ->method('getTime') - ->will($this->returnValue($this->time)); - $this->l10n = $this->getMockBuilder('\OCP\IL10N') - ->disableOriginalConstructor() - ->getMock(); - $this->feedMapper = $this->getMockBuilder('\OCA\News\Db\FeedMapper') - ->disableOriginalConstructor() - ->getMock(); - $this->fetcher = $this->getMockBuilder('\OCA\News\Fetcher\Fetcher') - ->disableOriginalConstructor() - ->getMock(); - $this->itemMapper = $this->getMockBuilder('\OCA\News\Db\ItemMapper') - ->disableOriginalConstructor() - ->getMock(); - $this->enhancer = $this->getMockBuilder('\OCA\News\ArticleEnhancer\Enhancer') - ->disableOriginalConstructor() - ->getMock(); - $this->purifier = $this->getMock('purifier', ['purify']); - $config = $this->getMockBuilder( - '\OCA\News\Config\Config') - ->disableOriginalConstructor() - ->getMock(); - $config->expects($this->any()) - ->method('getAutoPurgeMinimumInterval') - ->will($this->returnValue($this->autoPurgeMinimumInterval)); - - $this->feedService = new FeedService($this->feedMapper, - $this->fetcher, $this->itemMapper, $this->logger, $this->l10n, - $timeFactory, $config, $this->enhancer, $this->purifier, $this->loggerParams); - $this->user = 'jack'; - } - - - public function testFindAll(){ - $this->feedMapper->expects($this->once()) - ->method('findAllFromUser') - ->with($this->equalTo($this->user)) - ->will($this->returnValue($this->response)); - - $result = $this->feedService->findAll($this->user); - $this->assertEquals($this->response, $result); - } - - - public function testCreateDoesNotFindFeed(){ - $ex = new FetcherException('hi'); - $url = 'test'; - $this->l10n->expects($this->once()) - ->method('t'); - $this->fetcher->expects($this->once()) - ->method('fetch') - ->with($this->equalTo($url)) - ->will($this->throwException($ex)); - $this->setExpectedException('\OCA\News\Service\ServiceNotFoundException'); - $this->feedService->create($url, 1, $this->user); - } - - public function testCreate(){ - $url = 'http://test'; - $folderId = 10; - $createdFeed = new Feed(); - $ex = new DoesNotExistException('yo'); - $createdFeed->setUrl($url); - $createdFeed->setUrlHash('hsssi'); - $createdFeed->setLink($url); - $createdFeed->setTitle('hehoy'); - $item1 = new Item(); - $item1->setGuidHash('hi'); - $item2 = new Item(); - $item2->setGuidHash('yo'); - $return = [ - $createdFeed, - [$item1, $item2] - ]; - - $this->feedMapper->expects($this->once()) - ->method('findByUrlHash') - ->with($this->equalTo($createdFeed->getUrlHash()), $this->equalTo($this->user)) - ->will($this->throwException($ex)); - $this->fetcher->expects($this->once()) - ->method('fetch') - ->with($this->equalTo($url)) - ->will($this->returnValue($return)); - $this->feedMapper->expects($this->once()) - ->method('insert') - ->with($this->equalTo($createdFeed)) - ->will($this->returnValue($createdFeed)); - $this->itemMapper->expects($this->at(0)) - ->method('findByGuidHash') - ->with( - $this->equalTo($item2->getGuidHash()), - $this->equalTo($item2->getFeedId()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - $this->enhancer->expects($this->at(0)) - ->method('enhance') - ->with($this->equalTo($return[1][1]), - $this->equalTo($url)) - ->will($this->returnValue($return[1][1])); - $this->purifier->expects($this->at(0)) - ->method('purify') - ->with($this->equalTo($return[1][1]->getBody())) - ->will($this->returnValue($return[1][1]->getBody())); - $this->itemMapper->expects($this->at(1)) - ->method('insert') - ->with($this->equalTo($return[1][1])); - $this->itemMapper->expects($this->at(2)) - ->method('findByGuidHash') - ->with( - $this->equalTo($item1->getGuidHash()), - $this->equalTo($item1->getFeedId()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - $this->enhancer->expects($this->at(1)) - ->method('enhance') - ->with($this->equalTo($return[1][0]), - $this->equalTo($url)) - ->will($this->returnValue($return[1][0])); - $this->purifier->expects($this->at(1)) - ->method('purify') - ->with($this->equalTo($return[1][0]->getBody())) - ->will($this->returnValue($return[1][0]->getBody())); - $this->itemMapper->expects($this->at(3)) - ->method('insert') - ->with($this->equalTo($return[1][0])); - - $feed = $this->feedService->create($url, $folderId, $this->user); - - $this->assertEquals($feed->getFolderId(), $folderId); - $this->assertEquals($feed->getUrl(), $url); - $this->assertEquals($feed->getArticlesPerUpdate(), 2); - } - - - public function testCreateItemGuidExistsAlready(){ - $url = 'http://test'; - $folderId = 10; - $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(); - $item2->setGuidHash('yo'); - $return = [ - $createdFeed, - [$item1, $item2] - ]; - - $this->feedMapper->expects($this->once()) - ->method('findByUrlHash') - ->with($this->equalTo($createdFeed->getUrlHash()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - $this->fetcher->expects($this->once()) - ->method('fetch') - ->with($this->equalTo($url)) - ->will($this->returnValue($return)); - $this->feedMapper->expects($this->once()) - ->method('insert') - ->with($this->equalTo($createdFeed)) - ->will($this->returnValue($createdFeed)); - $this->itemMapper->expects($this->at(0)) - ->method('findByGuidHash') - ->with( - $this->equalTo($item2->getGuidHash()), - $this->equalTo($item2->getFeedId()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - $this->enhancer->expects($this->at(0)) - ->method('enhance') - ->with($this->equalTo($return[1][1]), - $this->equalTo($url)) - ->will($this->returnValue($return[1][1])); - $this->purifier->expects($this->at(0)) - ->method('purify') - ->with($this->equalTo($return[1][1]->getBody())) - ->will($this->returnValue($return[1][1]->getBody())); - $this->itemMapper->expects($this->at(1)) - ->method('insert') - ->with($this->equalTo($return[1][1])); - $this->itemMapper->expects($this->at(2)) - ->method('findByGuidHash') - ->with( - $this->equalTo($item1->getGuidHash()), - $this->equalTo($item1->getFeedId()), - $this->equalTo($this->user)); - - $feed = $this->feedService->create($url, $folderId, $this->user); - - $this->assertEquals($feed->getFolderId(), $folderId); - $this->assertEquals($feed->getUrl(), $url); - $this->assertEquals(1, $feed->getUnreadCount()); - } - - - public function testUpdateCreatesNewEntry(){ - $feed = new Feed(); - $feed->setId(3); - $feed->setArticlesPerUpdate(1); - $feed->setUrlHash('yo'); - - $item = new Item(); - $item->setGuidHash(md5('hi')); - $item->setFeedId(3); - $items = [$item]; - - $ex = new DoesNotExistException('hi'); - - $fetchReturn = [$feed, $items]; - - $this->feedMapper->expects($this->at(0)) - ->method('find') - ->with($this->equalTo($feed->getId()), - $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - $this->fetcher->expects($this->once()) - ->method('fetch') - ->will($this->returnValue($fetchReturn)); - $this->itemMapper->expects($this->once()) - ->method('findByGuidHash') - ->with($this->equalTo($items[0]->getGuidHash()), - $this->equalTo($items[0]->getFeedId()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - $this->enhancer->expects($this->at(0)) - ->method('enhance') - ->with($this->equalTo($items[0]), - $this->equalTo($feed->getUrl())) - ->will($this->returnValue($items[0])); - $this->purifier->expects($this->at(0)) - ->method('purify') - ->with($this->equalTo($items[0]->getBody())) - ->will($this->returnValue($items[0]->getBody())); - $this->itemMapper->expects($this->once()) - ->method('insert') - ->with($this->equalTo($items[0])); - - $this->feedMapper->expects($this->at(1)) - ->method('find') - ->with($feed->getId(), $this->user) - ->will($this->returnValue($feed)); - - $return = $this->feedService->update($feed->getId(), $this->user); - - $this->assertEquals($return, $feed); - } - - - public function testUpdateUpdatesArticlesPerFeedCount() { - $feed = new Feed(); - $feed->setId(3); - $feed->setUrlHash('yo'); - - $existingFeed = new Feed(); - $feed->setArticlesPerUpdate(2); - - $item = new Item(); - $item->setGuidHash(md5('hi')); - $item->setFeedId(3); - $items = [$item]; - - $this->feedMapper->expects($this->any()) - ->method('find') - ->will($this->returnValue($existingFeed)); - - $this->fetcher->expects($this->once()) - ->method('fetch') - ->will($this->returnValue([$feed, $items])); - - $this->feedMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($existingFeed)); - - - $this->feedService->update($feed->getId(), $this->user); - } - - public function testUpdateFails(){ - $feed = new Feed(); - $feed->setId(3); - $ex = new FetcherException(''); - - $this->feedMapper->expects($this->at(0)) - ->method('find') - ->with($this->equalTo($feed->getId()), - $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - $this->fetcher->expects($this->once()) - ->method('fetch') - ->will($this->throwException($ex)); - $this->logger->expects($this->any()) - ->method('debug'); - - $this->feedMapper->expects($this->at(1)) - ->method('find') - ->with($feed->getId(), $this->user) - ->will($this->returnValue($feed)); - - $return = $this->feedService->update($feed->getId(), $this->user); - - $this->assertEquals($return, $feed); - } - - - public function testUpdateDoesNotFindEntry() { - $feed = new Feed(); - $feed->setId(3); - - $ex = new DoesNotExistException(''); - - $this->feedMapper->expects($this->at(0)) - ->method('find') - ->with($this->equalTo($feed->getId()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - - $this->setExpectedException('\OCA\News\Service\ServiceNotFoundException'); - $this->feedService->update($feed->getId(), $this->user); - } - - - public function testUpdateDoesNotFindUpdatedEntry() { - $feed = new Feed(); - $feed->setId(3); - $feed->setArticlesPerUpdate(1); - - $item = new Item(); - $item->setGuidHash(md5('hi')); - $item->setPubDate(3333); - $item->setId(4); - $items = [$item]; - - $item2 = new Item(); - $item2->setPubDate(111); - - $fetchReturn = [$feed, $items]; - $ex = new DoesNotExistException(''); - - $this->feedMapper->expects($this->at(0)) - ->method('find') - ->with($this->equalTo($feed->getId()), - $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - $this->fetcher->expects($this->once()) - ->method('fetch') - ->will($this->returnValue($fetchReturn)); - $this->itemMapper->expects($this->once()) - ->method('findByGuidHash') - ->with($this->equalTo($item->getGuidHash()), - $this->equalTo($feed->getId()), - $this->equalTo($this->user)) - ->will($this->returnValue($item2));; - - $this->feedMapper->expects($this->at(1)) - ->method('find') - ->with($this->equalTo($feed->getId()), - $this->equalTo($this->user)) - ->will($this->throwException($ex)); - - $this->setExpectedException('\OCA\News\Service\ServiceNotFoundException'); - $this->feedService->update($feed->getId(), $this->user); - } - - - public function testUpdateDoesntUpdateIfFeedIsPrevented() { - $feedId = 3; - $feed = new Feed(); - $feed->setFolderId(16); - $feed->setId($feedId); - $feed->setPreventUpdate(true); - - $this->feedMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($feedId), - $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - $this->fetcher->expects($this->never()) - ->method('fetch'); - - $this->feedService->update($feedId, $this->user); - } - - - public function testMove(){ - $feedId = 3; - $folderId = 4; - $feed = new Feed(); - $feed->setFolderId(16); - $feed->setId($feedId); - - $this->feedMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($feedId), $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - - $this->feedMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($feed)); - - $this->feedService->move($feedId, $folderId, $this->user); - - $this->assertEquals($folderId, $feed->getFolderId()); - } - - - public function testRenameFeed(){ - $feedId = 3; - $feedTitle = "New Feed Title"; - $feed = new Feed(); - $feed->setTitle("Feed Title"); - $feed->setId($feedId); - - $this->feedMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($feedId), $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - - $this->feedMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($feed)); - - $this->feedService->rename($feedId, $feedTitle, $this->user); - - $this->assertEquals($feedTitle, $feed->getTitle()); - } - - - public function testImportArticles(){ - $url = 'http://owncloud/nofeed'; - - $feed = new Feed(); - $feed->setId(3); - $feed->setUserId($this->user); - $feed->setUrl($url); - $feed->setLink($url); - $feed->setTitle('Articles without feed'); - $feed->setAdded($this->time); - $feed->setFolderId(0); - $feed->setPreventUpdate(true); - - $feeds = [$feed]; - - $item = new Item(); - $item->setFeedId(3); - $item->setAuthor('john'); - $item->setGuid('s'); - $item->setTitle('hey'); - $item->setPubDate(333); - $item->setBody('come over'); - $item->setEnclosureMime('mime'); - $item->setEnclosureLink('lin'); - $item->setUnread(); - $item->setUnstarred(); - $item->setLastModified($this->time); - - $json = $item->toExport(['feed3' => $feed]); - - $items = [$json]; - - $this->feedMapper->expects($this->once()) - ->method('findAllFromUser') - ->with($this->equalTo($this->user)) - ->will($this->returnValue($feeds)); - - $this->itemMapper->expects($this->once()) - ->method('findByGuidHash') - ->will($this->throwException(new DoesNotExistException('yo'))); - $this->itemMapper->expects($this->once()) - ->method('insert') - ->with($this->equalTo($item)); - - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo($item->getBody())) - ->will($this->returnValue($item->getBody())); - - $result = $this->feedService->importArticles($items, $this->user); - - $this->assertEquals(null, $result); - } - - - public function testImportArticlesCreatesOwnFeedWhenNotFound(){ - $url = 'http://owncloud/args'; - - $feed = new Feed(); - $feed->setId(3); - $feed->setUserId($this->user); - $feed->setUrl($url); - $feed->setLink($url); - $feed->setTitle('Articles without feed'); - $feed->setAdded($this->time); - $feed->setFolderId(0); - $feed->setPreventUpdate(true); - - $feeds = [$feed]; - - $item = new Item(); - $item->setFeedId(3); - $item->setAuthor('john'); - $item->setGuid('s'); - $item->setTitle('hey'); - $item->setPubDate(333); - $item->setBody('come over'); - $item->setEnclosureMime('mime'); - $item->setEnclosureLink('lin'); - $item->setUnread(); - $item->setUnstarred(); - $item->setLastModified($this->time); - - $json = $item->toExport(['feed3' => $feed]); - $json2 = $json; - $json2['feedLink'] = 'http://test.com'; // believe it or not this copies stuff :D - - $items = [$json, $json2]; - - $insertFeed = new Feed(); - $insertFeed->setLink('http://owncloud/nofeed'); - $insertFeed->setUrl('http://owncloud/nofeed'); - $insertFeed->setUserId($this->user); - $insertFeed->setTitle('Articles without feed'); - $insertFeed->setAdded($this->time); - $insertFeed->setPreventUpdate(true); - $insertFeed->setFolderId(0); - - $this->l10n->expects($this->once()) - ->method('t') - ->will($this->returnValue('Articles without feed')); - $this->feedMapper->expects($this->once()) - ->method('findAllFromUser') - ->with($this->equalTo($this->user)) - ->will($this->returnValue($feeds)); - $this->feedMapper->expects($this->once()) - ->method('insert') - ->with($this->equalTo($insertFeed)) - ->will($this->returnValue($insertFeed)); - - - $this->itemMapper->expects($this->at(0)) - ->method('findByGuidHash') - ->will($this->throwException(new DoesNotExistException('yo'))); - $this->purifier->expects($this->once()) - ->method('purify') - ->with($this->equalTo($item->getBody())) - ->will($this->returnValue($item->getBody())); - $this->itemMapper->expects($this->at(1)) - ->method('insert') - ->with($this->equalTo($item)); - - $this->itemMapper->expects($this->at(2)) - ->method('findByGuidHash') - ->will($this->returnValue($item)); - $this->itemMapper->expects($this->at(3)) - ->method('update') - ->with($this->equalTo($item)); - - $this->feedMapper->expects($this->once()) - ->method('findByUrlHash') - ->will($this->returnValue($feed)); - - $result = $this->feedService->importArticles($items, $this->user); - - $this->assertEquals($feed, $result); - } - - - public function testMarkDeleted() { - $id = 3; - $feed = new Feed(); - $feed2 = new Feed(); - $feed2->setDeletedAt($this->time); - - $this->feedMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($id), $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - $this->feedMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($feed2)); - - $this->feedService->markDeleted($id, $this->user); - } - - - public function testUnmarkDeleted() { - $id = 3; - $feed = new Feed(); - $feed2 = new Feed(); - $feed2->setDeletedAt(0); - - $this->feedMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($id), $this->equalTo($this->user)) - ->will($this->returnValue($feed)); - $this->feedMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($feed2)); - - $this->feedService->unmarkDeleted($id, $this->user); - } - - - public function testPurgeDeleted(){ - $feed1 = new Feed(); - $feed1->setId(3); - $feed2 = new Feed(); - $feed2->setId(5); - $feeds = [$feed1, $feed2]; - - $time = $this->time - $this->autoPurgeMinimumInterval; - $this->feedMapper->expects($this->once()) - ->method('getToDelete') - ->with($this->equalTo($time), $this->equalTo($this->user)) - ->will($this->returnValue($feeds)); - $this->feedMapper->expects($this->at(1)) - ->method('delete') - ->with($this->equalTo($feed1)); - $this->feedMapper->expects($this->at(2)) - ->method('delete') - ->with($this->equalTo($feed2)); - - $this->feedService->purgeDeleted($this->user); - } - - - public function testPurgeDeletedWithoutInterval(){ - $feed1 = new Feed(); - $feed1->setId(3); - $feed2 = new Feed(); - $feed2->setId(5); - $feeds = [$feed1, $feed2]; - - $this->feedMapper->expects($this->once()) - ->method('getToDelete') - ->with($this->equalTo(null), $this->equalTo($this->user)) - ->will($this->returnValue($feeds)); - $this->feedMapper->expects($this->at(1)) - ->method('delete') - ->with($this->equalTo($feed1)); - $this->feedMapper->expects($this->at(2)) - ->method('delete') - ->with($this->equalTo($feed2)); - - $this->feedService->purgeDeleted($this->user, false); - } - - - public function testfindAllFromAllUsers() { - $expected = 'hi'; - $this->feedMapper->expects($this->once()) - ->method('findAll') - ->will($this->returnValue($expected)); - $result = $this->feedService->findAllFromAllUsers(); - $this->assertEquals($expected, $result); - } - - - public function testDeleteUser() { - $this->feedMapper->expects($this->once()) - ->method('deleteUser') - ->will($this->returnValue($this->user)); - - $this->feedService->deleteUser($this->user); - } + private $feedMapper; + private $feedService; + private $user; + private $response; + private $fetcher; + private $itemMapper; + private $threshold; + private $time; + private $importParser; + private $autoPurgeMinimumInterval; + private $enhancer; + private $purifier; + private $l10n; + private $logger; + private $loggerParams; + + protected function setUp(){ + $this->logger = $this->getMockBuilder( + '\OCP\ILogger') + ->disableOriginalConstructor() + ->getMock(); + $this->loggerParams = ['hi']; + $this->time = 222; + $this->autoPurgeMinimumInterval = 10; + $timeFactory = $this->getMock('TimeFactory', ['getTime']); + $timeFactory->expects($this->any()) + ->method('getTime') + ->will($this->returnValue($this->time)); + $this->l10n = $this->getMockBuilder('\OCP\IL10N') + ->disableOriginalConstructor() + ->getMock(); + $this->feedMapper = $this->getMockBuilder('\OCA\News\Db\FeedMapper') + ->disableOriginalConstructor() + ->getMock(); + $this->fetcher = $this->getMockBuilder('\OCA\News\Fetcher\Fetcher') + ->disableOriginalConstructor() + ->getMock(); + $this->itemMapper = $this->getMockBuilder('\OCA\News\Db\ItemMapper') + ->disableOriginalConstructor() + ->getMock(); + $this->enhancer = $this->getMockBuilder('\OCA\News\ArticleEnhancer\Enhancer') + ->disableOriginalConstructor() + ->getMock(); + $this->purifier = $this->getMock('purifier', ['purify']); + $config = $this->getMockBuilder( + '\OCA\News\Config\Config') + ->disableOriginalConstructor() + ->getMock(); + $config->expects($this->any()) + ->method('getAutoPurgeMinimumInterval') + ->will($this->returnValue($this->autoPurgeMinimumInterval)); + + $this->feedService = new FeedService($this->feedMapper, + $this->fetcher, $this->itemMapper, $this->logger, $this->l10n, + $timeFactory, $config, $this->enhancer, $this->purifier, $this->loggerParams); + $this->user = 'jack'; + } + + + public function testFindAll(){ + $this->feedMapper->expects($this->once()) + ->method('findAllFromUser') + ->with($this->equalTo($this->user)) + ->will($this->returnValue($this->response)); + + $result = $this->feedService->findAll($this->user); + $this->assertEquals($this->response, $result); + } + + + public function testCreateDoesNotFindFeed(){ + $ex = new FetcherException('hi'); + $url = 'test'; + $this->l10n->expects($this->once()) + ->method('t'); + $this->fetcher->expects($this->once()) + ->method('fetch') + ->with($this->equalTo($url)) + ->will($this->throwException($ex)); + $this->setExpectedException('\OCA\News\Service\ServiceNotFoundException'); + $this->feedService->create($url, 1, $this->user); + } + + public function testCreate(){ + $url = 'http://test'; + $folderId = 10; + $createdFeed = new Feed(); + $ex = new DoesNotExistException('yo'); + $createdFeed->setUrl($url); + $createdFeed->setUrlHash('hsssi'); + $createdFeed->setLink($url); + $createdFeed->setTitle('hehoy'); + $item1 = new Item(); + $item1->setGuidHash('hi'); + $item2 = new Item(); + $item2->setGuidHash('yo'); + $return = [ + $createdFeed, + [$item1, $item2] + ]; + + $this->feedMapper->expects($this->once()) + ->method('findByUrlHash') + ->with($this->equalTo($createdFeed->getUrlHash()), $this->equalTo($this->user)) + ->will($this->throwException($ex)); + $this->fetcher->expects($this->once()) + ->method('fetch') + ->with($this->equalTo($url)) + ->will($this->returnValue($return)); + $this->feedMapper->expects($this->once()) + ->method('insert') + ->with($this->equalTo($createdFeed)) + ->will($this->returnValue($createdFeed)); + $this->itemMapper->expects($this->at(0)) + ->method('findByGuidHash') + ->with( + $this->equalTo($item2->getGuidHash()), + $this->equalTo($item2->getFeedId()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + $this->enhancer->expects($this->at(0)) + ->method('enhance') + ->with($this->equalTo($return[1][1]), + $this->equalTo($url)) + ->will($this->returnValue($return[1][1])); + $this->purifier->expects($this->at(0)) + ->method('purify') + ->with($this->equalTo($return[1][1]->getBody())) + ->will($this->returnValue($return[1][1]->getBody())); + $this->itemMapper->expects($this->at(1)) + ->method('insert') + ->with($this->equalTo($return[1][1])); + $this->itemMapper->expects($this->at(2)) + ->method('findByGuidHash') + ->with( + $this->equalTo($item1->getGuidHash()), + $this->equalTo($item1->getFeedId()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + $this->enhancer->expects($this->at(1)) + ->method('enhance') + ->with($this->equalTo($return[1][0]), + $this->equalTo($url)) + ->will($this->returnValue($return[1][0])); + $this->purifier->expects($this->at(1)) + ->method('purify') + ->with($this->equalTo($return[1][0]->getBody())) + ->will($this->returnValue($return[1][0]->getBody())); + $this->itemMapper->expects($this->at(3)) + ->method('insert') + ->with($this->equalTo($return[1][0])); + + $feed = $this->feedService->create($url, $folderId, $this->user); + + $this->assertEquals($feed->getFolderId(), $folderId); + $this->assertEquals($feed->getUrl(), $url); + $this->assertEquals($feed->getArticlesPerUpdate(), 2); + } + + + public function testCreateItemGuidExistsAlready(){ + $url = 'http://test'; + $folderId = 10; + $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(); + $item2->setGuidHash('yo'); + $return = [ + $createdFeed, + [$item1, $item2] + ]; + + $this->feedMapper->expects($this->once()) + ->method('findByUrlHash') + ->with($this->equalTo($createdFeed->getUrlHash()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + $this->fetcher->expects($this->once()) + ->method('fetch') + ->with($this->equalTo($url)) + ->will($this->returnValue($return)); + $this->feedMapper->expects($this->once()) + ->method('insert') + ->with($this->equalTo($createdFeed)) + ->will($this->returnValue($createdFeed)); + $this->itemMapper->expects($this->at(0)) + ->method('findByGuidHash') + ->with( + $this->equalTo($item2->getGuidHash()), + $this->equalTo($item2->getFeedId()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + $this->enhancer->expects($this->at(0)) + ->method('enhance') + ->with($this->equalTo($return[1][1]), + $this->equalTo($url)) + ->will($this->returnValue($return[1][1])); + $this->purifier->expects($this->at(0)) + ->method('purify') + ->with($this->equalTo($return[1][1]->getBody())) + ->will($this->returnValue($return[1][1]->getBody())); + $this->itemMapper->expects($this->at(1)) + ->method('insert') + ->with($this->equalTo($return[1][1])); + $this->itemMapper->expects($this->at(2)) + ->method('findByGuidHash') + ->with( + $this->equalTo($item1->getGuidHash()), + $this->equalTo($item1->getFeedId()), + $this->equalTo($this->user)); + + $feed = $this->feedService->create($url, $folderId, $this->user); + + $this->assertEquals($feed->getFolderId(), $folderId); + $this->assertEquals($feed->getUrl(), $url); + $this->assertEquals(1, $feed->getUnreadCount()); + } + + + public function testUpdateCreatesNewEntry(){ + $feed = new Feed(); + $feed->setId(3); + $feed->setArticlesPerUpdate(1); + $feed->setUrlHash('yo'); + + $item = new Item(); + $item->setGuidHash(md5('hi')); + $item->setFeedId(3); + $items = [$item]; + + $ex = new DoesNotExistException('hi'); + + $fetchReturn = [$feed, $items]; + + $this->feedMapper->expects($this->at(0)) + ->method('find') + ->with($this->equalTo($feed->getId()), + $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + $this->fetcher->expects($this->once()) + ->method('fetch') + ->will($this->returnValue($fetchReturn)); + $this->itemMapper->expects($this->once()) + ->method('findByGuidHash') + ->with($this->equalTo($items[0]->getGuidHash()), + $this->equalTo($items[0]->getFeedId()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + $this->enhancer->expects($this->at(0)) + ->method('enhance') + ->with($this->equalTo($items[0]), + $this->equalTo($feed->getUrl())) + ->will($this->returnValue($items[0])); + $this->purifier->expects($this->at(0)) + ->method('purify') + ->with($this->equalTo($items[0]->getBody())) + ->will($this->returnValue($items[0]->getBody())); + $this->itemMapper->expects($this->once()) + ->method('insert') + ->with($this->equalTo($items[0])); + + $this->feedMapper->expects($this->at(1)) + ->method('find') + ->with($feed->getId(), $this->user) + ->will($this->returnValue($feed)); + + $return = $this->feedService->update($feed->getId(), $this->user); + + $this->assertEquals($return, $feed); + } + + + public function testUpdateUpdatesArticlesPerFeedCount() { + $feed = new Feed(); + $feed->setId(3); + $feed->setUrlHash('yo'); + + $existingFeed = new Feed(); + $feed->setArticlesPerUpdate(2); + + $item = new Item(); + $item->setGuidHash(md5('hi')); + $item->setFeedId(3); + $items = [$item]; + + $this->feedMapper->expects($this->any()) + ->method('find') + ->will($this->returnValue($existingFeed)); + + $this->fetcher->expects($this->once()) + ->method('fetch') + ->will($this->returnValue([$feed, $items])); + + $this->feedMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($existingFeed)); + + + $this->feedService->update($feed->getId(), $this->user); + } + + public function testUpdateFails(){ + $feed = new Feed(); + $feed->setId(3); + $ex = new FetcherException(''); + + $this->feedMapper->expects($this->at(0)) + ->method('find') + ->with($this->equalTo($feed->getId()), + $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + $this->fetcher->expects($this->once()) + ->method('fetch') + ->will($this->throwException($ex)); + $this->logger->expects($this->any()) + ->method('debug'); + + $this->feedMapper->expects($this->at(1)) + ->method('find') + ->with($feed->getId(), $this->user) + ->will($this->returnValue($feed)); + + $return = $this->feedService->update($feed->getId(), $this->user); + + $this->assertEquals($return, $feed); + } + + + public function testUpdateDoesNotFindEntry() { + $feed = new Feed(); + $feed->setId(3); + + $ex = new DoesNotExistException(''); + + $this->feedMapper->expects($this->at(0)) + ->method('find') + ->with($this->equalTo($feed->getId()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + + $this->setExpectedException('\OCA\News\Service\ServiceNotFoundException'); + $this->feedService->update($feed->getId(), $this->user); + } + + + public function testUpdateDoesNotFindUpdatedEntry() { + $feed = new Feed(); + $feed->setId(3); + $feed->setArticlesPerUpdate(1); + + $item = new Item(); + $item->setGuidHash(md5('hi')); + $item->setPubDate(3333); + $item->setId(4); + $items = [$item]; + + $item2 = new Item(); + $item2->setPubDate(111); + + $fetchReturn = [$feed, $items]; + $ex = new DoesNotExistException(''); + + $this->feedMapper->expects($this->at(0)) + ->method('find') + ->with($this->equalTo($feed->getId()), + $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + $this->fetcher->expects($this->once()) + ->method('fetch') + ->will($this->returnValue($fetchReturn)); + $this->itemMapper->expects($this->once()) + ->method('findByGuidHash') + ->with($this->equalTo($item->getGuidHash()), + $this->equalTo($feed->getId()), + $this->equalTo($this->user)) + ->will($this->returnValue($item2));; + + $this->feedMapper->expects($this->at(1)) + ->method('find') + ->with($this->equalTo($feed->getId()), + $this->equalTo($this->user)) + ->will($this->throwException($ex)); + + $this->setExpectedException('\OCA\News\Service\ServiceNotFoundException'); + $this->feedService->update($feed->getId(), $this->user); + } + + + public function testUpdateDoesntUpdateIfFeedIsPrevented() { + $feedId = 3; + $feed = new Feed(); + $feed->setFolderId(16); + $feed->setId($feedId); + $feed->setPreventUpdate(true); + + $this->feedMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($feedId), + $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + $this->fetcher->expects($this->never()) + ->method('fetch'); + + $this->feedService->update($feedId, $this->user); + } + + + public function testMove(){ + $feedId = 3; + $folderId = 4; + $feed = new Feed(); + $feed->setFolderId(16); + $feed->setId($feedId); + + $this->feedMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($feedId), $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + + $this->feedMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($feed)); + + $this->feedService->move($feedId, $folderId, $this->user); + + $this->assertEquals($folderId, $feed->getFolderId()); + } + + + public function testRenameFeed(){ + $feedId = 3; + $feedTitle = "New Feed Title"; + $feed = new Feed(); + $feed->setTitle("Feed Title"); + $feed->setId($feedId); + + $this->feedMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($feedId), $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + + $this->feedMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($feed)); + + $this->feedService->rename($feedId, $feedTitle, $this->user); + + $this->assertEquals($feedTitle, $feed->getTitle()); + } + + + public function testImportArticles(){ + $url = 'http://owncloud/nofeed'; + + $feed = new Feed(); + $feed->setId(3); + $feed->setUserId($this->user); + $feed->setUrl($url); + $feed->setLink($url); + $feed->setTitle('Articles without feed'); + $feed->setAdded($this->time); + $feed->setFolderId(0); + $feed->setPreventUpdate(true); + + $feeds = [$feed]; + + $item = new Item(); + $item->setFeedId(3); + $item->setAuthor('john'); + $item->setGuid('s'); + $item->setTitle('hey'); + $item->setPubDate(333); + $item->setBody('come over'); + $item->setEnclosureMime('mime'); + $item->setEnclosureLink('lin'); + $item->setUnread(); + $item->setUnstarred(); + $item->setLastModified($this->time); + + $json = $item->toExport(['feed3' => $feed]); + + $items = [$json]; + + $this->feedMapper->expects($this->once()) + ->method('findAllFromUser') + ->with($this->equalTo($this->user)) + ->will($this->returnValue($feeds)); + + $this->itemMapper->expects($this->once()) + ->method('findByGuidHash') + ->will($this->throwException(new DoesNotExistException('yo'))); + $this->itemMapper->expects($this->once()) + ->method('insert') + ->with($this->equalTo($item)); + + $this->purifier->expects($this->once()) + ->method('purify') + ->with($this->equalTo($item->getBody())) + ->will($this->returnValue($item->getBody())); + + $result = $this->feedService->importArticles($items, $this->user); + + $this->assertEquals(null, $result); + } + + + public function testImportArticlesCreatesOwnFeedWhenNotFound(){ + $url = 'http://owncloud/args'; + + $feed = new Feed(); + $feed->setId(3); + $feed->setUserId($this->user); + $feed->setUrl($url); + $feed->setLink($url); + $feed->setTitle('Articles without feed'); + $feed->setAdded($this->time); + $feed->setFolderId(0); + $feed->setPreventUpdate(true); + + $feeds = [$feed]; + + $item = new Item(); + $item->setFeedId(3); + $item->setAuthor('john'); + $item->setGuid('s'); + $item->setTitle('hey'); + $item->setPubDate(333); + $item->setBody('come over'); + $item->setEnclosureMime('mime'); + $item->setEnclosureLink('lin'); + $item->setUnread(); + $item->setUnstarred(); + $item->setLastModified($this->time); + + $json = $item->toExport(['feed3' => $feed]); + $json2 = $json; + $json2['feedLink'] = 'http://test.com'; // believe it or not this copies stuff :D + + $items = [$json, $json2]; + + $insertFeed = new Feed(); + $insertFeed->setLink('http://owncloud/nofeed'); + $insertFeed->setUrl('http://owncloud/nofeed'); + $insertFeed->setUserId($this->user); + $insertFeed->setTitle('Articles without feed'); + $insertFeed->setAdded($this->time); + $insertFeed->setPreventUpdate(true); + $insertFeed->setFolderId(0); + + $this->l10n->expects($this->once()) + ->method('t') + ->will($this->returnValue('Articles without feed')); + $this->feedMapper->expects($this->once()) + ->method('findAllFromUser') + ->with($this->equalTo($this->user)) + ->will($this->returnValue($feeds)); + $this->feedMapper->expects($this->once()) + ->method('insert') + ->with($this->equalTo($insertFeed)) + ->will($this->returnValue($insertFeed)); + + + $this->itemMapper->expects($this->at(0)) + ->method('findByGuidHash') + ->will($this->throwException(new DoesNotExistException('yo'))); + $this->purifier->expects($this->once()) + ->method('purify') + ->with($this->equalTo($item->getBody())) + ->will($this->returnValue($item->getBody())); + $this->itemMapper->expects($this->at(1)) + ->method('insert') + ->with($this->equalTo($item)); + + $this->itemMapper->expects($this->at(2)) + ->method('findByGuidHash') + ->will($this->returnValue($item)); + $this->itemMapper->expects($this->at(3)) + ->method('update') + ->with($this->equalTo($item)); + + $this->feedMapper->expects($this->once()) + ->method('findByUrlHash') + ->will($this->returnValue($feed)); + + $result = $this->feedService->importArticles($items, $this->user); + + $this->assertEquals($feed, $result); + } + + + public function testMarkDeleted() { + $id = 3; + $feed = new Feed(); + $feed2 = new Feed(); + $feed2->setDeletedAt($this->time); + + $this->feedMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($id), $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + $this->feedMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($feed2)); + + $this->feedService->markDeleted($id, $this->user); + } + + + public function testUnmarkDeleted() { + $id = 3; + $feed = new Feed(); + $feed2 = new Feed(); + $feed2->setDeletedAt(0); + + $this->feedMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($id), $this->equalTo($this->user)) + ->will($this->returnValue($feed)); + $this->feedMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($feed2)); + + $this->feedService->unmarkDeleted($id, $this->user); + } + + + public function testPurgeDeleted(){ + $feed1 = new Feed(); + $feed1->setId(3); + $feed2 = new Feed(); + $feed2->setId(5); + $feeds = [$feed1, $feed2]; + + $time = $this->time - $this->autoPurgeMinimumInterval; + $this->feedMapper->expects($this->once()) + ->method('getToDelete') + ->with($this->equalTo($time), $this->equalTo($this->user)) + ->will($this->returnValue($feeds)); + $this->feedMapper->expects($this->at(1)) + ->method('delete') + ->with($this->equalTo($feed1)); + $this->feedMapper->expects($this->at(2)) + ->method('delete') + ->with($this->equalTo($feed2)); + + $this->feedService->purgeDeleted($this->user); + } + + + public function testPurgeDeletedWithoutInterval(){ + $feed1 = new Feed(); + $feed1->setId(3); + $feed2 = new Feed(); + $feed2->setId(5); + $feeds = [$feed1, $feed2]; + + $this->feedMapper->expects($this->once()) + ->method('getToDelete') + ->with($this->equalTo(null), $this->equalTo($this->user)) + ->will($this->returnValue($feeds)); + $this->feedMapper->expects($this->at(1)) + ->method('delete') + ->with($this->equalTo($feed1)); + $this->feedMapper->expects($this->at(2)) + ->method('delete') + ->with($this->equalTo($feed2)); + + $this->feedService->purgeDeleted($this->user, false); + } + + + public function testfindAllFromAllUsers() { + $expected = 'hi'; + $this->feedMapper->expects($this->once()) + ->method('findAll') + ->will($this->returnValue($expected)); + $result = $this->feedService->findAllFromAllUsers(); + $this->assertEquals($expected, $result); + } + + + public function testDeleteUser() { + $this->feedMapper->expects($this->once()) + ->method('deleteUser') + ->will($this->returnValue($this->user)); + + $this->feedService->deleteUser($this->user); + } } diff --git a/tests/unit/service/FolderServiceTest.php b/tests/unit/service/FolderServiceTest.php index bbc89c99d..53fb737b7 100644 --- a/tests/unit/service/FolderServiceTest.php +++ b/tests/unit/service/FolderServiceTest.php @@ -18,255 +18,255 @@ use \OCA\News\Db\Folder; class FolderServiceTest extends \PHPUnit_Framework_TestCase { - private $folderMapper; - private $folderService; - private $time; - private $user; - private $autoPurgeMinimumInterval; - private $l10n; - - protected function setUp(){ - $this->l10n = $this->getMockBuilder('\OCP\IL10N') - ->disableOriginalConstructor() - ->getMock(); - $this->time = 222; - $timeFactory = $this->getMock('TimeFactory', ['getTime']); - $timeFactory->expects($this->any()) - ->method('getTime') - ->will($this->returnValue($this->time)); - $this->folderMapper = $this->getMockBuilder( - '\OCA\News\Db\FolderMapper') - ->disableOriginalConstructor() - ->getMock(); - $this->autoPurgeMinimumInterval = 10; - $config = $this->getMockBuilder( - '\OCA\News\Config\Config') - ->disableOriginalConstructor() - ->getMock(); - $config->expects($this->any()) - ->method('getAutoPurgeMinimumInterval') - ->will($this->returnValue($this->autoPurgeMinimumInterval)); - $this->folderService = new FolderService( - $this->folderMapper, $this->l10n, $timeFactory, $config); - $this->user = 'hi'; - } + private $folderMapper; + private $folderService; + private $time; + private $user; + private $autoPurgeMinimumInterval; + private $l10n; + + protected function setUp(){ + $this->l10n = $this->getMockBuilder('\OCP\IL10N') + ->disableOriginalConstructor() + ->getMock(); + $this->time = 222; + $timeFactory = $this->getMock('TimeFactory', ['getTime']); + $timeFactory->expects($this->any()) + ->method('getTime') + ->will($this->returnValue($this->time)); + $this->folderMapper = $this->getMockBuilder( + '\OCA\News\Db\FolderMapper') + ->disableOriginalConstructor() + ->getMock(); + $this->autoPurgeMinimumInterval = 10; + $config = $this->getMockBuilder( + '\OCA\News\Config\Config') + ->disableOriginalConstructor() + ->getMock(); + $config->expects($this->any()) + ->method('getAutoPurgeMinimumInterval') + ->will($this->returnValue($this->autoPurgeMinimumInterval)); + $this->folderService = new FolderService( + $this->folderMapper, $this->l10n, $timeFactory, $config); + $this->user = 'hi'; + } - function testFindAll(){ - $userId = 'jack'; - $return = 'hi'; - $this->folderMapper->expects($this->once()) - ->method('findAllFromUser') - ->with($this->equalTo($userId)) - ->will($this->returnValue($return)); - - $result = $this->folderService->findAll($userId); - - $this->assertEquals($return, $result); - } - - - public function testCreate(){ - $folder = new Folder(); - $folder->setName('hey'); - $folder->setParentId(5); - $folder->setUserId('john'); - $folder->setOpened(true); + function testFindAll(){ + $userId = 'jack'; + $return = 'hi'; + $this->folderMapper->expects($this->once()) + ->method('findAllFromUser') + ->with($this->equalTo($userId)) + ->will($this->returnValue($return)); + + $result = $this->folderService->findAll($userId); + + $this->assertEquals($return, $result); + } + + + public function testCreate(){ + $folder = new Folder(); + $folder->setName('hey'); + $folder->setParentId(5); + $folder->setUserId('john'); + $folder->setOpened(true); - $this->folderMapper->expects($this->once()) - ->method('insert') - ->with($this->equalTo($folder)) - ->will($this->returnValue($folder)); - - $result = $this->folderService->create('hey', 'john', 5); + $this->folderMapper->expects($this->once()) + ->method('insert') + ->with($this->equalTo($folder)) + ->will($this->returnValue($folder)); + + $result = $this->folderService->create('hey', 'john', 5); - $this->assertEquals($folder, $result); - } + $this->assertEquals($folder, $result); + } - public function testCreateThrowsExWhenFolderNameExists(){ - $folderName = 'hihi'; - $rows = [['id' => 1]]; + public function testCreateThrowsExWhenFolderNameExists(){ + $folderName = 'hihi'; + $rows = [['id' => 1]]; - $this->l10n->expects($this->once()) - ->method('t'); - $this->folderMapper->expects($this->once()) - ->method('findByName') - ->with($this->equalTo($folderName)) - ->will($this->returnValue($rows)); - - $this->setExpectedException('\OCA\News\Service\ServiceConflictException'); - $this->folderService->create($folderName, 'john', 3); - } + $this->l10n->expects($this->once()) + ->method('t'); + $this->folderMapper->expects($this->once()) + ->method('findByName') + ->with($this->equalTo($folderName)) + ->will($this->returnValue($rows)); + + $this->setExpectedException('\OCA\News\Service\ServiceConflictException'); + $this->folderService->create($folderName, 'john', 3); + } - public function testCreateThrowsExWhenFolderNameEmpty(){ - $folderName = ''; - - $this->folderMapper->expects($this->once()) - ->method('findByName') - ->with($this->equalTo($folderName)) - ->will($this->returnValue([])); - - $this->setExpectedException('\OCA\News\Service\ServiceValidationException'); - $this->folderService->create($folderName, 'john', 3); - } - - - public function testOpen(){ - $folder = new Folder(); - - $this->folderMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo(3)) - ->will($this->returnValue($folder)); - - $this->folderMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($folder)); - - $this->folderService->open(3, false, ''); - - $this->assertFalse($folder->getOpened()); - - } - - - public function testRename(){ - $folder = new Folder(); - $folder->setName('jooohn'); - - $this->folderMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo(3)) - ->will($this->returnValue($folder)); + public function testCreateThrowsExWhenFolderNameEmpty(){ + $folderName = ''; + + $this->folderMapper->expects($this->once()) + ->method('findByName') + ->with($this->equalTo($folderName)) + ->will($this->returnValue([])); + + $this->setExpectedException('\OCA\News\Service\ServiceValidationException'); + $this->folderService->create($folderName, 'john', 3); + } + + + public function testOpen(){ + $folder = new Folder(); + + $this->folderMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo(3)) + ->will($this->returnValue($folder)); + + $this->folderMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($folder)); + + $this->folderService->open(3, false, ''); + + $this->assertFalse($folder->getOpened()); + + } + + + public function testRename(){ + $folder = new Folder(); + $folder->setName('jooohn'); + + $this->folderMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo(3)) + ->will($this->returnValue($folder)); - $this->folderMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($folder)); + $this->folderMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($folder)); - $this->folderService->rename(3, 'bogus', ''); + $this->folderService->rename(3, 'bogus', ''); - $this->assertEquals('bogus', $folder->getName()); - } + $this->assertEquals('bogus', $folder->getName()); + } - public function testRenameThrowsExWhenFolderNameExists(){ - $folderName = 'hihi'; - $rows = [['id' => 1]]; + public function testRenameThrowsExWhenFolderNameExists(){ + $folderName = 'hihi'; + $rows = [['id' => 1]]; - $this->l10n->expects($this->once()) - ->method('t'); - $this->folderMapper->expects($this->once()) - ->method('findByName') - ->with($this->equalTo($folderName)) - ->will($this->returnValue($rows)); + $this->l10n->expects($this->once()) + ->method('t'); + $this->folderMapper->expects($this->once()) + ->method('findByName') + ->with($this->equalTo($folderName)) + ->will($this->returnValue($rows)); - $this->setExpectedException('\OCA\News\Service\ServiceConflictException'); - $this->folderService->rename(3, $folderName, 'john'); - } + $this->setExpectedException('\OCA\News\Service\ServiceConflictException'); + $this->folderService->rename(3, $folderName, 'john'); + } - public function testRenameThrowsExWhenFolderNameEmpty(){ - $folderName = ''; + public function testRenameThrowsExWhenFolderNameEmpty(){ + $folderName = ''; - $this->folderMapper->expects($this->once()) - ->method('findByName') - ->with($this->equalTo($folderName)) - ->will($this->returnValue([])); + $this->folderMapper->expects($this->once()) + ->method('findByName') + ->with($this->equalTo($folderName)) + ->will($this->returnValue([])); - $this->setExpectedException('\OCA\News\Service\ServiceValidationException'); - $this->folderService->rename(3, $folderName, 'john'); - } + $this->setExpectedException('\OCA\News\Service\ServiceValidationException'); + $this->folderService->rename(3, $folderName, 'john'); + } - public function testMarkDeleted() { - $id = 3; - $folder = new Folder(); - $folder2 = new Folder(); - $folder2->setDeletedAt($this->time); + public function testMarkDeleted() { + $id = 3; + $folder = new Folder(); + $folder2 = new Folder(); + $folder2->setDeletedAt($this->time); - $this->folderMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($id), $this->equalTo($this->user)) - ->will($this->returnValue($folder)); - $this->folderMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($folder2)); + $this->folderMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($id), $this->equalTo($this->user)) + ->will($this->returnValue($folder)); + $this->folderMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($folder2)); - $this->folderService->markDeleted($id, $this->user); - } + $this->folderService->markDeleted($id, $this->user); + } - public function testUnmarkDeleted() { - $id = 3; - $folder = new Folder(); - $folder2 = new Folder(); - $folder2->setDeletedAt(0); - - $this->folderMapper->expects($this->once()) - ->method('find') - ->with($this->equalTo($id), $this->equalTo($this->user)) - ->will($this->returnValue($folder)); - $this->folderMapper->expects($this->once()) - ->method('update') - ->with($this->equalTo($folder2)); + public function testUnmarkDeleted() { + $id = 3; + $folder = new Folder(); + $folder2 = new Folder(); + $folder2->setDeletedAt(0); + + $this->folderMapper->expects($this->once()) + ->method('find') + ->with($this->equalTo($id), $this->equalTo($this->user)) + ->will($this->returnValue($folder)); + $this->folderMapper->expects($this->once()) + ->method('update') + ->with($this->equalTo($folder2)); - $this->folderService->unmarkDeleted($id, $this->user); - } - - public function testPurgeDeleted(){ - $folder1 = new Folder(); - $folder1->setId(3); - $folder2 = new Folder(); - $folder2->setId(5); - $feeds = [$folder1, $folder2]; - - $time = $this->time - $this->autoPurgeMinimumInterval; - $this->folderMapper->expects($this->once()) - ->method('getToDelete') - ->with($this->equalTo($time), $this->equalTo($this->user)) - ->will($this->returnValue($feeds)); - $this->folderMapper->expects($this->at(1)) - ->method('delete') - ->with($this->equalTo($folder1)); - $this->folderMapper->expects($this->at(2)) - ->method('delete') - ->with($this->equalTo($folder2)); - - $this->folderService->purgeDeleted($this->user); - } - - - public function testPurgeDeletedNoInterval(){ - $folder1 = new Folder(); - $folder1->setId(3); - $folder2 = new Folder(); - $folder2->setId(5); - $feeds = [$folder1, $folder2]; - - $this->folderMapper->expects($this->once()) - ->method('getToDelete') - ->with($this->equalTo(null), $this->equalTo($this->user)) - ->will($this->returnValue($feeds)); - $this->folderMapper->expects($this->at(1)) - ->method('delete') - ->with($this->equalTo($folder1)); - $this->folderMapper->expects($this->at(2)) - ->method('delete') - ->with($this->equalTo($folder2)); - - $this->folderService->purgeDeleted($this->user, false); - } - - - public function testDeleteUser() { - $this->folderMapper->expects($this->once()) - ->method('deleteUser') - ->will($this->returnValue($this->user)); - - $this->folderService->deleteUser($this->user); - } + $this->folderService->unmarkDeleted($id, $this->user); + } + + public function testPurgeDeleted(){ + $folder1 = new Folder(); + $folder1->setId(3); + $folder2 = new Folder(); + $folder2->setId(5); + $feeds = [$folder1, $folder2]; + + $time = $this->time - $this->autoPurgeMinimumInterval; + $this->folderMapper->expects($this->once()) + ->method('getToDelete') + ->with($this->equalTo($time), $this->equalTo($this->user)) + ->will($this->returnValue($feeds)); + $this->folderMapper->expects($this->at(1)) + ->method('delete') + ->with($this->equalTo($folder1)); + $this->folderMapper->expects($this->at(2)) + ->method('delete') + ->with($this->equalTo($folder2)); + + $this->folderService->purgeDeleted($this->user); + } + + + public function testPurgeDeletedNoInterval(){ + $folder1 = new Folder(); + $folder1->setId(3); + $folder2 = new Folder(); + $folder2->setId(5); + $feeds = [$folder1, $folder2]; + + $this->folderMapper->expects($this->once()) + ->method('getToDelete') + ->with($this->equalTo(null), $this->equalTo($this->user)) + ->will($this->returnValue($feeds)); + $this->folderMapper->expects($this->at(1)) + ->method('delete') + ->with($this->equalTo($folder1)); + $this->folderMapper->expects($this->at(2)) + ->method('delete') + ->with($this->equalTo($folder2)); + + $this->folderService->purgeDeleted($this->user, false); + } + + + public function testDeleteUser() { + $this->folderMapper->expects($this->once()) + ->method('deleteUser') + ->will($this->returnValue($this->user)); + + $this->folderService->deleteUser($this->user); + } } diff --git a/tests/unit/service/ItemServiceTest.php b/tests/unit/service/ItemServiceTest.php index 03d644eb9..b9f23fee6 100644 --- a/tests/unit/service/ItemServiceTest.php +++ b/tests/unit/service/ItemServiceTest.php @@ -22,403 +22,403 @@ use \OCA\News\Db\FeedType; class ItemServiceTest extends \PHPUnit_Framework_TestCase { - private $mapper; - private $itemService; - private $user; - private $response; - private $status; - private $time; - private $newestItemId; - - - protected function setUp(){ - $this->time = 222; - $timeFactory = $this->getMock('TimeFactory', ['getTime']); - $timeFactory->expects($this->any()) - ->method('getTime') - ->will($this->returnValue($this->time)); - $this->mapper = $this->getMockBuilder('\OCA\News\Db\ItemMapper') - ->disableOriginalConstructor() - ->getMock(); - $statusFlag = $this->getMockBuilder('\OCA\News\Db\StatusFlag') - ->disableOriginalConstructor() - ->getMock(); - $this->status = StatusFlag::STARRED; - $statusFlag->expects($this->any()) - ->method('typeToStatus') - ->will($this->returnValue($this->status)); - $this->threshold = 2; - $config = $this->getMockBuilder( - '\OCA\News\Config\Config') - ->disableOriginalConstructor() - ->getMock(); - $config->expects($this->any()) - ->method('getAutoPurgeCount') - ->will($this->returnValue($this->threshold)); - $this->itemService = new ItemService($this->mapper, - $statusFlag, $timeFactory, $config); - $this->user = 'jack'; - $this->id = 3; - $this->updatedSince = 20333; - $this->showAll = true; - $this->offset = 5; - $this->limit = 20; - $this->newestItemId = 4; - } - - - public function testFindAllNewFeed(){ - $type = FeedType::FEED; - $this->mapper->expects($this->once()) - ->method('findAllNewFeed') - ->with($this->equalTo($this->id), - $this->equalTo($this->updatedSince), - $this->equalTo($this->status), - $this->equalTo($this->user)) - ->will($this->returnValue($this->response)); - - $result = $this->itemService->findAllNew( - $this->id, $type, $this->updatedSince, $this->showAll, - $this->user); - $this->assertEquals($this->response, $result); - } - - - public function testFindAllNewFolder(){ - $type = FeedType::FOLDER; - $this->mapper->expects($this->once()) - ->method('findAllNewFolder') - ->with($this->equalTo($this->id), - $this->equalTo($this->updatedSince), - $this->equalTo($this->status), - $this->equalTo($this->user)) - ->will($this->returnValue($this->response)); - - $result = $this->itemService->findAllNew( - $this->id, $type, $this->updatedSince, $this->showAll, - $this->user); - $this->assertEquals($this->response, $result); - } - - - public function testFindAllNew(){ - $type = FeedType::STARRED; - $this->mapper->expects($this->once()) - ->method('findAllNew') - ->with( $this->equalTo($this->updatedSince), - $this->equalTo($this->status), - $this->equalTo($this->user)) - ->will($this->returnValue($this->response)); - - $result = $this->itemService->findAllNew( - $this->id, $type, $this->updatedSince, $this->showAll, - $this->user); - $this->assertEquals($this->response, $result); - } - - - public function testFindAllFeed(){ - $type = FeedType::FEED; - $this->mapper->expects($this->once()) - ->method('findAllFeed') - ->with($this->equalTo($this->id), - $this->equalTo($this->limit), - $this->equalTo($this->offset), - $this->equalTo($this->status), - $this->equalTo(false), - $this->equalTo($this->user)) - ->will($this->returnValue($this->response));