diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2016-07-23 21:24:54 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2016-07-23 21:24:54 +0200 |
commit | 004fcbbcc7609ca83807f2e38967ef54f469bf72 (patch) | |
tree | 49eb99b4ea92b2045793fc567f719b31ec7f9042 /tests/Integration/Db/ItemMapperTest.php | |
parent | 60abc0ed4438c9b6fda245b0dc33cb483bc2aeaf (diff) |
Move to new directory structure
Diffstat (limited to 'tests/Integration/Db/ItemMapperTest.php')
-rw-r--r-- | tests/Integration/Db/ItemMapperTest.php | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/tests/Integration/Db/ItemMapperTest.php b/tests/Integration/Db/ItemMapperTest.php new file mode 100644 index 000000000..14c989cbf --- /dev/null +++ b/tests/Integration/Db/ItemMapperTest.php @@ -0,0 +1,297 @@ +<?php +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2015 + */ + +namespace OCA\News\Db; + +use OCA\News\Tests\Integration\Fixtures\FeedFixture; +use OCA\News\Tests\Integration\Fixtures\ItemFixture; +use OCA\News\Tests\Integration\IntegrationTest; + +class ItemMapperTest extends IntegrationTest { + + public function testFind() { + $feed = new FeedFixture(); + $feed = $this->feedMapper->insert($feed); + + $item = new ItemFixture(['feedId' => $feed->getId()]); + + $item = $this->itemMapper->insert($item); + + $fetched = $this->itemMapper->find($item->getId(), $this->user); + + $this->assertEquals($item->getTitle(), $fetched->getTitle()); + } + + /** + * Same as whereId with easier title search + * @param $title + * @return mixed + */ + private function whereTitleId($title) { + return $this->findItemByTitle($title)->getId(); + } + + /** + * @expectedException OCP\AppFramework\Db\DoesNotExistException + */ + public function testFindNotFoundWhenDeletedFeed() { + $this->loadFixtures('default'); + + $id = $this->whereTitleId('not found feed'); + $this->itemMapper->find($id, $this->user); + } + + + /** + * @expectedException OCP\AppFramework\Db\DoesNotExistException + */ + public function testFindNotFoundWhenDeletedFolder() { + $this->loadFixtures('default'); + + + $id = $this->whereTitleId('not found folder'); + $this->itemMapper->find($id, $this->user); + } + + + private function deleteReadOlderThanThreshold() { + $this->loadFixtures('default'); + + $this->itemMapper->deleteReadOlderThanThreshold(1); + + $this->itemMapper->find($this->whereTitleId('a title1'), $this->user); + $this->itemMapper->find($this->whereTitleId('a title2'), $this->user); + $this->itemMapper->find($this->whereTitleId('a title3'), $this->user); + $this->itemMapper->find($this->whereTitleId('del3'), $this->user); + $this->itemMapper->find($this->whereTitleId('del4'), $this->user); + } + + /** + * @expectedException OCP\AppFramework\Db\DoesNotExistException + */ + public function testDeleteOlderThanThresholdOne() { + $this->loadFixtures('default'); + $id = $this->whereTitleId('del1'); + + $this->deleteReadOlderThanThreshold(); + + $this->itemMapper->find($id, $this->user); + } + + /** + * @expectedException OCP\AppFramework\Db\DoesNotExistException + */ + public function testDeleteOlderThanThresholdTwo() { + $this->loadFixtures('default'); + $id = $this->whereTitleId('del2'); + + $this->deleteReadOlderThanThreshold(); + + $this->itemMapper->find($id, $this->user); + } + + + public function testStarredCount () { + $this->loadFixtures('default'); + + $count = $this->itemMapper->starredCount($this->user); + $this->assertEquals(2, $count); + } + + + public function testReadAll () { + $this->loadFixtures('default'); + + $this->itemMapper->readAll(PHP_INT_MAX, 10, $this->user); + + $status = StatusFlag::UNREAD; + $items = $this->itemMapper->findAll( + 30, 0, $status, false, $this->user + ); + + $this->assertEquals(0, count($items)); + + $itemId = $this->whereTitleId('a title1'); + $item = $this->itemMapper->find($itemId, $this->user); + + $this->assertEquals(10, $item->getLastModified()); + + $itemId = $this->whereTitleId('a title3'); + $item = $this->itemMapper->find($itemId, $this->user); + + $this->assertEquals(10, $item->getLastModified()); + + $itemId = $this->whereTitleId('a title9'); + $item = $this->itemMapper->find($itemId, $this->user); + + $this->assertEquals(10, $item->getLastModified()); + } + + + public function testReadFolder () { + $this->loadFixtures('default'); + + $folderId = $this->findFolderByName('first folder')->getId(); + $this->itemMapper->readFolder( + $folderId, PHP_INT_MAX, 10, $this->user + ); + + $status = StatusFlag::UNREAD; + $items = $this->itemMapper->findAll( + 30, 0, $status, false, $this->user + ); + + $this->assertEquals(1, count($items)); + + $item = $this->findItemByTitle('a title1'); + $item = $this->itemMapper->find($item->getId(), $this->user); + + $this->assertEquals(10, $item->getLastModified()); + + $item = $this->findItemByTitle('a title3'); + $item = $this->itemMapper->find($item->getId(), $this->user); + + $this->assertEquals(10, $item->getLastModified()); + + $item = $this->findItemByTitle('a title9'); + $item = $this->itemMapper->find($item->getId(), $this->user); + + $this->assertTrue($item->isUnread()); + } + + + public function testReadFeed () { + $this->loadFixtures('default'); + + $feedId = $this->findFeedByTitle('third feed')->getId(); + $this->itemMapper->readFeed( + $feedId, PHP_INT_MAX, 10, $this->user + ); + + $status = StatusFlag::UNREAD; + $items = $this->itemMapper->findAll( + 30, 0, $status, false, $this->user + ); + + $this->assertEquals(2, count($items)); + + $item = $this->findItemByTitle('a title9'); + $item = $this->itemMapper->find($item->getId(), $this->user); + + $this->assertEquals(10, $item->getLastModified()); + + $item = $this->findItemByTitle('a title3'); + $item = $this->itemMapper->find($item->getId(), $this->user); + $this->assertTrue($item->isUnread()); + + + $item = $this->findItemByTitle('a title1'); + $item = $this->itemMapper->find($item->getId(), $this->user); + $this->assertTrue($item->isUnread()); + } + + + public function testDeleteUser () { + $this->loadFixtures('default'); + + $this->itemMapper->deleteUser($this->user); + $id = $this->itemMapper->getNewestItemId($this->user); + + $this->assertEquals(0, $id); + } + + public function testGetNewestItemId () { + $this->loadFixtures('default'); + + $id = $this->itemMapper->getNewestItemId($this->user); + + $itemId = $this->whereTitleId('no folder'); + $this->assertEquals($itemId, $id); + } + + public function testFindAllUnreadOrStarred () { + $this->loadFixtures('default'); + + $items = $this->itemMapper->findAllUnreadOrStarred($this->user); + $this->assertEquals(4, count($items)); + } + + + public function testReadItem() { + $this->loadFixtures('readitem'); + // assert that all items are unread + $feed = $this->feedMapper->where(['userId' => 'john'])[0]; + $items = $this->itemMapper->where(['feedId' => $feed->getId()]); + foreach ($items as $item) { + $this->assertTrue($item->isUnread()); + } + $feed = $this->feedMapper->where(['userId' => 'test'])[0]; + $items = $this->itemMapper->where(['feedId' => $feed->getId()]); + foreach ($items as $item) { + $this->assertTrue($item->isUnread()); + } + + // read an item + $duplicateItem = $this->itemMapper->where(['feedId' => $feed->getId()])[0]; + $this->itemMapper->readItem($duplicateItem->getId(), true, 1000, $this->user); + + // assert that all test user's same items are read + $items = $this->itemMapper->where(['feedId' => $feed->getId(), 'title' => 'blubb']); + foreach ($items as $item) { + $this->assertTrue($item->isRead()); + } + + // assert that a different item is not read + $items = $this->itemMapper->where(['feedId' => $feed->getId(), 'title' => 'blubbs']); + foreach ($items as $item) { + $this->assertTrue($item->isUnread()); + } + + // assert that other user's same items stayed the same + $johnsFeed = $this->feedMapper->where(['userId' => 'john'])[0]; + $items = $this->itemMapper->where(['feedId' => $johnsFeed->getId()]); + foreach ($items as $item) { + $this->assertTrue($item->isUnread()); + } + } + + public function testUnreadItem() { + $this->loadFixtures('readitem'); + // unread an item + $feed = $this->feedMapper->where(['userId' => 'test'])[0]; + $duplicateItem = $this->itemMapper->where(['feedId' => $feed->getId()])[0]; + $this->itemMapper->readItem($duplicateItem->getId(), true, 1000, $this->user); + $this->itemMapper->readItem($duplicateItem->getId(), false, 1000, $this->user); + + // assert that only one item is now unread + $items = $this->itemMapper->where(['feedId' => $feed->getId(), 'title' => 'blubb']); + foreach ($items as $item) { + if ($item->getId() === $duplicateItem->getId()) { + $this->assertTrue($item->isUnread()); + } else { + $this->assertTrue($item->isRead()); + } + } + + // assert that other user's same items stayed the same + $johnsFeed = $this->feedMapper->where(['userId' => 'john'])[0]; + $items = $this->itemMapper->where(['feedId' => $johnsFeed->getId()]); + foreach ($items as $item) { + $this->assertTrue($item->isUnread()); + } + } + + protected function tearDown() { + parent::tearDown(); + $this->clearUserNewsDatabase('john'); + } + +} |