summaryrefslogtreecommitdiffstats
path: root/tests/unit/db
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/db')
-rw-r--r--tests/unit/db/FeedMapperTest.php614
-rw-r--r--tests/unit/db/FeedTest.php142
-rw-r--r--tests/unit/db/FolderMapperTest.php238
-rw-r--r--tests/unit/db/FolderTest.php60
-rw-r--r--tests/unit/db/ItemMapperTest.php768
-rw-r--r--tests/unit/db/ItemTest.php514
-rw-r--r--tests/unit/db/MapperFactoryTest.php38
-rw-r--r--tests/unit/db/postgres/ItemMapperTest.php146
8 files changed, 1260 insertions, 1260 deletions
diff --git a/tests/unit/db/FeedMapperTest.php b/tests/unit/db/FeedMapperTest.php
index 93137d8d4..a1a570b87 100644
--- a/tests/unit/db/FeedMapperTest.php
+++ b/tests/unit/db/FeedMapperTest.php
@@ -16,313 +16,313 @@ namespace OCA\News\Db;
class FeedMapperTest extends \Test\AppFramework\Db\MapperTestUtility {
- private $mapper;
- private $feeds;
-
- protected function setUp(){
- parent::setUp();
-
- $this->mapper = new FeedMapper($this->db);
-
- // create mock feeds
- $feed1 = new Feed();
- $feed2 = new Feed();
-
- $this->feeds = [$feed1, $feed2];
- $this->user = 'herman';
- }
-
-
- public function testFind(){
- $userId = 'john';
- $id = 3;
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ];
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`id` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $params = [$id, $userId];
- $this->setMapperResult($sql, $params, $rows);
-
- $result = $this->mapper->find($id, $userId);
- $this->assertEquals($this->feeds[0], $result);
-
- }
-
-
- public function testFindNotFound(){
- $userId = 'john';
- $id = 3;
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`id` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $params = [$id, $userId];
- $this->setMapperResult($sql, $params);
-
- $this->setExpectedException('\OCP\AppFramework\Db\DoesNotExistException');
- $this->mapper->find($id, $userId);
- }
-
-
- public function testFindMoreThanOneResultFound(){
- $userId = 'john';
- $id = 3;
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`id` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $params = [$id, $userId];
- $this->setMapperResult($sql, $params, $rows);
-
- $this->setExpectedException('\OCP\AppFramework\Db\MultipleObjectsReturnedException');
- $this->mapper->find($id, $userId);
- }
-
-
- public function testFindAll(){
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
- 'ON `feeds`.`folder_id` = `folders`.`id` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- // WARNING: this is a desperate attempt at making this query work
- // because prepared statements dont work. This is a possible
- // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
- // think twice when changing this
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE (`feeds`.`folder_id` = 0 ' .
- 'OR `folders`.`deleted_at` = 0' .
- ')' .
- 'AND `feeds`.`deleted_at` = 0 ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
-
- $this->setMapperResult($sql, [], $rows);
-
- $result = $this->mapper->findAll();
- $this->assertEquals($this->feeds, $result);
- }
-
-
- public function testFindAllFromUser(){
- $userId = 'john';
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
- 'ON `feeds`.`folder_id` = `folders`.`id` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- // WARNING: this is a desperate attempt at making this query work
- // because prepared statements dont work. This is a possible
- // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
- // think twice when changing this
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`user_id` = ? ' .
- 'AND (`feeds`.`folder_id` = 0 ' .
- 'OR `folders`.`deleted_at` = 0' .
- ')' .
- 'AND `feeds`.`deleted_at` = 0 ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $this->setMapperResult($sql, [$userId], $rows);
-
- $result = $this->mapper->findAllFromUser($userId);
- $this->assertEquals($this->feeds, $result);
- }
-
-
- public function testFindByUrlHash(){
- $urlHash = md5('hihi');
- $row = [['id' => $this->feeds[0]->getId()]];
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`url_hash` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $this->setMapperResult($sql, [$urlHash, $this->user], $row);
-
- $result = $this->mapper->findByUrlHash($urlHash, $this->user);
- $this->assertEquals($this->feeds[0], $result);
- }
-
-
- public function testFindByUrlHashNotFound(){
- $urlHash = md5('hihi');
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`url_hash` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $this->setMapperResult($sql, [$urlHash, $this->user]);
-
- $this->setExpectedException('\OCP\AppFramework\Db\DoesNotExistException');
- $this->mapper->findByUrlHash($urlHash, $this->user);
- }
-
-
- public function testFindByUrlHashMoreThanOneResultFound(){
- $urlHash = md5('hihi');
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`url_hash` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $this->setMapperResult($sql, [$urlHash, $this->user], $rows);
-
- $this->setExpectedException('\OCP\AppFramework\Db\MultipleObjectsReturnedException');
- $this->mapper->findByUrlHash($urlHash, $this->user);
- }
-
-
- public function testDelete(){
- $feed = new Feed();
- $feed->setId(3);
-
- $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `id` = ?';
- $arguments = [$feed->getId()];
-
- $sql2 = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` = ?';
- $arguments2 = [$feed->getId()];
-
- $pdoResult = $this->getMock('Result', ['fetch']);
- $pdoResult->expects($this->any())->method('fetch');
-
- $this->setMapperResult($sql, $arguments);
- $this->setMapperResult($sql2, $arguments2);
-
- $this->mapper->delete($feed);
-
- }
-
-
- public function testGetPurgeDeleted(){
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
- $deleteOlderThan = 110;
- $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
- 'WHERE `deleted_at` > 0 ' .
- 'AND `deleted_at` < ? ';
- $this->setMapperResult($sql, [$deleteOlderThan], $rows);
- $result = $this->mapper->getToDelete($deleteOlderThan);
-
- $this->assertEquals($this->feeds, $result);
- }
-
-
- public function testGetPurgeDeletedFromUser(){
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
- $deleteOlderThan = 110;
- $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
- 'WHERE `deleted_at` > 0 ' .
- 'AND `deleted_at` < ? ' .
- 'AND `user_id` = ?';
- $this->setMapperResult($sql, [$deleteOlderThan, $this->user], $rows);
- $result = $this->mapper->getToDelete($deleteOlderThan, $this->user);
-
- $this->assertEquals($this->feeds, $result);
- }
-
-
- public function testGetAllPurgeDeletedFromUser(){
- $rows = [
- ['id' => $this->feeds[0]->getId()],
- ['id' => $this->feeds[1]->getId()]
- ];
-
- $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
- 'WHERE `deleted_at` > 0 ' .
- 'AND `user_id` = ?';
- $this->setMapperResult($sql, [$this->user], $rows);
- $result = $this->mapper->getToDelete(null, $this->user);
-
- $this->assertEquals($this->feeds, $result);
- }
-
-
- public function testDeleteFromUser(){
- $userId = 'john';
- $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `user_id` = ?';
-
- $this->setMapperResult($sql, [$userId]);
-
- $this->mapper->deleteUser($userId);
- }
+ private $mapper;
+ private $feeds;
+
+ protected function setUp(){
+ parent::setUp();
+
+ $this->mapper = new FeedMapper($this->db);
+
+ // create mock feeds
+ $feed1 = new Feed();
+ $feed2 = new Feed();
+
+ $this->feeds = [$feed1, $feed2];
+ $this->user = 'herman';
+ }
+
+
+ public function testFind(){
+ $userId = 'john';
+ $id = 3;
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ];
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`id` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $params = [$id, $userId];
+ $this->setMapperResult($sql, $params, $rows);
+
+ $result = $this->mapper->find($id, $userId);
+ $this->assertEquals($this->feeds[0], $result);
+
+ }
+
+
+ public function testFindNotFound(){
+ $userId = 'john';
+ $id = 3;
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`id` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $params = [$id, $userId];
+ $this->setMapperResult($sql, $params);
+
+ $this->setExpectedException('\OCP\AppFramework\Db\DoesNotExistException');
+ $this->mapper->find($id, $userId);
+ }
+
+
+ public function testFindMoreThanOneResultFound(){
+ $userId = 'john';
+ $id = 3;
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`id` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $params = [$id, $userId];
+ $this->setMapperResult($sql, $params, $rows);
+
+ $this->setExpectedException('\OCP\AppFramework\Db\MultipleObjectsReturnedException');
+ $this->mapper->find($id, $userId);
+ }
+
+
+ public function testFindAll(){
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
+ 'ON `feeds`.`folder_id` = `folders`.`id` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ // WARNING: this is a desperate attempt at making this query work
+ // because prepared statements dont work. This is a possible
+ // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
+ // think twice when changing this
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE (`feeds`.`folder_id` = 0 ' .
+ 'OR `folders`.`deleted_at` = 0' .
+ ')' .
+ 'AND `feeds`.`deleted_at` = 0 ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+
+ $this->setMapperResult($sql, [], $rows);
+
+ $result = $this->mapper->findAll();
+ $this->assertEquals($this->feeds, $result);
+ }
+
+
+ public function testFindAllFromUser(){
+ $userId = 'john';
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
+ 'ON `feeds`.`folder_id` = `folders`.`id` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ // WARNING: this is a desperate attempt at making this query work
+ // because prepared statements dont work. This is a possible
+ // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
+ // think twice when changing this
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`user_id` = ? ' .
+ 'AND (`feeds`.`folder_id` = 0 ' .
+ 'OR `folders`.`deleted_at` = 0' .
+ ')' .
+ 'AND `feeds`.`deleted_at` = 0 ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $this->setMapperResult($sql, [$userId], $rows);
+
+ $result = $this->mapper->findAllFromUser($userId);
+ $this->assertEquals($this->feeds, $result);
+ }
+
+
+ public function testFindByUrlHash(){
+ $urlHash = md5('hihi');
+ $row = [['id' => $this->feeds[0]->getId()]];
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`url_hash` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $this->setMapperResult($sql, [$urlHash, $this->user], $row);
+
+ $result = $this->mapper->findByUrlHash($urlHash, $this->user);
+ $this->assertEquals($this->feeds[0], $result);
+ }
+
+
+ public function testFindByUrlHashNotFound(){
+ $urlHash = md5('hihi');
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`url_hash` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $this->setMapperResult($sql, [$urlHash, $this->user]);
+
+ $this->setExpectedException('\OCP\AppFramework\Db\DoesNotExistException');
+ $this->mapper->findByUrlHash($urlHash, $this->user);
+ }
+
+
+ public function testFindByUrlHashMoreThanOneResultFound(){
+ $urlHash = md5('hihi');
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`url_hash` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $this->setMapperResult($sql, [$urlHash, $this->user], $rows);
+
+ $this->setExpectedException('\OCP\AppFramework\Db\MultipleObjectsReturnedException');
+ $this->mapper->findByUrlHash($urlHash, $this->user);
+ }
+
+
+ public function testDelete(){
+ $feed = new Feed();
+ $feed->setId(3);
+
+ $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `id` = ?';
+ $arguments = [$feed->getId()];
+
+ $sql2 = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` = ?';
+ $arguments2 = [$feed->getId()];
+
+ $pdoResult = $this->getMock('Result', ['fetch']);
+ $pdoResult->expects($this->any())->method('fetch');
+
+ $this->setMapperResult($sql, $arguments);
+ $this->setMapperResult($sql2, $arguments2);
+
+ $this->mapper->delete($feed);
+
+ }
+
+
+ public function testGetPurgeDeleted(){
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+ $deleteOlderThan = 110;
+ $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
+ 'WHERE `deleted_at` > 0 ' .
+ 'AND `deleted_at` < ? ';
+ $this->setMapperResult($sql, [$deleteOlderThan], $rows);
+ $result = $this->mapper->getToDelete($deleteOlderThan);
+
+ $this->assertEquals($this->feeds, $result);
+ }
+
+
+ public function testGetPurgeDeletedFromUser(){
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+ $deleteOlderThan = 110;
+ $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
+ 'WHERE `deleted_at` > 0 ' .
+ 'AND `deleted_at` < ? ' .
+ 'AND `user_id` = ?';
+ $this->setMapperResult($sql, [$deleteOlderThan, $this->user], $rows);
+ $result = $this->mapper->getToDelete($deleteOlderThan, $this->user);
+
+ $this->assertEquals($this->feeds, $result);
+ }
+
+
+ public function testGetAllPurgeDeletedFromUser(){
+ $rows = [
+ ['id' => $this->feeds[0]->getId()],
+ ['id' => $this->feeds[1]->getId()]
+ ];
+
+ $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
+ 'WHERE `deleted_at` > 0 ' .
+ 'AND `user_id` = ?';
+ $this->setMapperResult($sql, [$this->user], $rows);
+ $result = $this->mapper->getToDelete(null, $this->user);
+
+ $this->assertEquals($this->feeds, $result);
+ }
+
+
+ public function testDeleteFromUser(){
+ $userId = 'john';
+ $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `user_id` = ?';
+
+ $this->setMapperResult($sql, [$userId]);
+
+ $this->mapper->deleteUser($userId);
+ }
}
diff --git a/tests/unit/db/FeedTest.php b/tests/unit/db/FeedTest.php
index f7fe9b885..936948813 100644
--- a/tests/unit/db/FeedTest.php
+++ b/tests/unit/db/FeedTest.php
@@ -17,77 +17,77 @@ namespace OCA\News\Db;
class FeedTest extends \PHPUnit_Framework_TestCase {
- private function createFeed() {
- $feed = new Feed();
- $feed->setId(3);
- $feed->setUrl('http://google.com/some/weird/path');
- $feed->setTitle('title');
- $feed->setFaviconLink('favicon');
- $feed->setAdded(123);
- $feed->setFolderId(1);
- $feed->setUnreadCount(321);
- $feed->setLink('https://www.google.com/some/weird/path');
-
- return $feed;
- }
-
- public function testToAPI() {
- $feed = $this->createFeed();
-
- $this->assertEquals([
- 'id' => 3,
- 'url' => 'http://google.com/some/weird/path',
- 'title' => 'title',
- 'faviconLink' => 'favicon',
- 'added' => 123,
- 'folderId' => 1,
- 'unreadCount' => 321,
- 'link' => 'https://www.google.com/some/weird/path'
- ], $feed->toAPI());
- }
-
-
- public function testSerialize() {
- $feed = $this->createFeed();
-
- $this->assertEquals([
- 'id' => 3,
- 'url' => 'http://google.com/some/weird/path',
- 'title' => 'title',
- 'faviconLink' => 'favicon',
- 'added' => 123,
- 'folderId' => 1,
- 'unreadCount' => 321,
- 'link' => 'https://www.google.com/some/weird/path',
- 'userId' => null,
- 'urlHash' => '44168618f55392b145629d6b3922e84b',
- 'preventUpdate' => null,
- 'deletedAt' => null,
- 'articlesPerUpdate' => null,
- 'cssClass' => 'custom-google-com',
- ], $feed->jsonSerialize());
- }
-
-
- public function testSetXSSUrl() {
- $feed = new Feed();
- $feed->setUrl('javascript:alert()');
- $this->assertEquals('', $feed->getUrl());
- }
-
-
- public function testSetUrlUpdatesHash() {
- $feed = new Feed();
- $feed->setUrl('http://test');
- $this->assertEquals(md5('http://test'), $feed->getUrlHash());
- }
-
-
- public function testSetXSSLink() {
- $feed = new Feed();
- $feed->setLink('javascript:alert()');
- $this->assertEquals('', $feed->getLink());
- }
+ private function createFeed() {
+ $feed = new Feed();
+ $feed->setId(3);
+ $feed->setUrl('http://google.com/some/weird/path');
+ $feed->setTitle('title');
+ $feed->setFaviconLink('favicon');
+ $feed->setAdded(123);
+ $feed->setFolderId(1);
+ $feed->setUnreadCount(321);
+ $feed->setLink('https://www.google.com/some/weird/path');
+
+ return $feed;
+ }
+
+ public function testToAPI() {
+ $feed = $this->createFeed();
+
+ $this->assertEquals([
+ 'id' => 3,
+ 'url' => 'http://google.com/some/weird/path',
+ 'title' => 'title',
+ 'faviconLink' => 'favicon',
+ 'added' => 123,
+ 'folderId' => 1,
+ 'unreadCount' => 321,
+ 'link' => 'https://www.google.com/some/weird/path'
+ ], $feed->toAPI());
+ }
+
+
+ public function testSerialize() {
+ $feed = $this->createFeed();
+
+ $this->assertEquals([
+ 'id' => 3,
+ 'url' => 'http://google.com/some/weird/path',
+ 'title' => 'title',
+ 'faviconLink' => 'favicon',
+ 'added' => 123,
+ 'folderId' => 1,
+ 'unreadCount' => 321,
+ 'link' => 'https://www.google.com/some/weird/path',
+ 'userId' => null,
+ 'urlHash' => '44168618f55392b145629d6b3922e84b',
+ 'preventUpdate' => null,
+ 'deletedAt' => null,
+ 'articlesPerUpdate' => null,
+ 'cssClass' => 'custom-google-com',
+ ], $feed->jsonSerialize());
+ }
+
+
+ public function testSetXSSUrl() {
+ $feed = new Feed();
+ $feed->setUrl('javascript:alert()');
+ $this->assertEquals('', $feed->getUrl());
+ }
+
+
+ public function testSetUrlUpdatesHash() {
+ $feed = new Feed();
+ $feed->setUrl('http://test');
+ $this->assertEquals(md5('http://test'), $feed->getUrlHash());
+ }
+
+
+ public function testSetXSSLink() {
+ $feed = new Feed();
+ $feed->setLink('javascript:alert()');
+ $this->assertEquals('', $feed->getLink());
+ }
} \ No newline at end of file
diff --git a/tests/unit/db/FolderMapperTest.php b/tests/unit/db/FolderMapperTest.php
index 6a2e94588..1078d205f 100644
--- a/tests/unit/db/FolderMapperTest.php
+++ b/tests/unit/db/FolderMapperTest.php
@@ -16,173 +16,173 @@ namespace OCA\News\Db;
class FolderMapperTest extends \Test\AppFramework\Db\MapperTestUtility {
- private $folderMapper;
- private $folders;
- private $user;
+ private $folderMapper;
+ private $folders;
+ private $user;
- protected function setUp(){
- parent::setUp();
+ protected function setUp(){
+ parent::setUp();
- $this->folderMapper = new FolderMapper($this->db);
+ $this->folderMapper = new FolderMapper($this->db);
- // create mock folders
- $folder1 = new Folder();
- $folder2 = new Folder();
+ // create mock folders
+ $folder1 = new Folder();
+ $folder2 = new Folder();
- $this->folders = [$folder1, $folder2];
- $this->user = 'hh';
- $this->twoRows = [
- ['id' => $this->folders[0]->getId()],
- ['id' => $this->folders[1]->getId()]
- ];
- }
+ $this->folders = [$folder1, $folder2];
+ $this->user = 'hh';
+ $this->twoRows = [
+ ['id' => $this->folders[0]->getId()],
+ ['id' => $this->folders[1]->getId()]
+ ];
+ }
- public function testFind(){
- $userId = 'john';
- $id = 3;
- $rows = [['id' => $this->folders[0]->getId()]];
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `id` = ? ' .
- 'AND `user_id` = ?';
+ public function testFind(){
+ $userId = 'john';
+ $id = 3;
+ $rows = [['id' => $this->folders[0]->getId()]];
+ $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
+ 'WHERE `id` = ? ' .
+ 'AND `user_id` = ?';
- $this->setMapperResult($sql, [$id, $userId], $rows);
+ $this->setMapperResult($sql, [$id, $userId], $rows);
- $result = $this->folderMapper->find($id, $userId);
- $this->assertEquals($this->folders[0], $result);
+ $result = $this->folderMapper->find($id, $userId);
+ $this->assertEquals($this->folders[0], $result);
- }
+ }
- public function testFindNotFound(){
- $userId = 'john';
- $id = 3;
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `id` = ? ' .
- 'AND `user_id` = ?';
+ public function testFindNotFound(){
+ $userId = 'john';
+ $id = 3;
+ $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
+ 'WHERE `id` = ? ' .
+ 'AND `user_id` = ?';
- $this->setMapperResult($sql, [$id, $userId]);
+ $this->setMapperResult($sql, [$id, $userId]);
- $this->setExpectedException('\OCP\AppFramework\Db\DoesNotExistException');
- $this->folderMapper->find($id, $userId);
- }
+ $this->setExpectedException('\OCP\AppFramework\Db\DoesNotExistException');
+ $this->folderMapper->find($id, $userId);
+ }
- public function testFindMoreThanOneResultFound(){
- $userId = 'john';
- $id = 3;
- $rows = $this->twoRows;
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `id` = ? ' .
- 'AND `user_id` = ?';
+ public function testFindMoreThanOneResultFound(){
+ $userId = 'john';
+ $id = 3;
+ $rows = $this->twoRows;
+ $sql =