summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2013-03-21 18:00:07 +0100
committerAlessandro Cosentino <cosenal@gmail.com>2013-03-21 18:00:07 +0100
commit25177ab4935fea917e6b1ec9dedb2b0258f2ed02 (patch)
treeef299ee2a4a8f528280eeae55d4b45772cb94b3f
parent3e1225f30a53d1fa217d01f8594514e6832c9464 (diff)
not working itemmapper with tests
-rw-r--r--db/itemmapper.php95
-rw-r--r--tests/db/ItemMapperTest.php254
2 files changed, 191 insertions, 158 deletions
diff --git a/db/itemmapper.php b/db/itemmapper.php
index bd223a77c..90c80d48c 100644
--- a/db/itemmapper.php
+++ b/db/itemmapper.php
@@ -35,8 +35,8 @@ class ItemMapper extends NewsMapper {
parent::__construct($api, 'news_items');
}
- protected function findAllRows($sql, $params) {
- $result = $this->execute($sql, $params);
+ protected function findAllRows($sql, $params, $limit=null, $offset=null) {
+ $result = $this->execute($sql, $params, $limit, $offset);
$items = array();
while($row = $result->fetchRow()){
@@ -48,54 +48,67 @@ class ItemMapper extends NewsMapper {
return $items;
}
+
+ /**
+ * Queries to find all items that belong to a user
+ */
+
+// private function makeFindAllFromFeedQuery($custom) {
+// return 'SELECT * FROM `*PREFIX*news_items` ' .
+// 'WHERE user_id = ? ' .
+// 'AND feed_id = ?' .
+// $custom;
+// }
+//
+// public function findAllFromFeed($feedId, $userId){
+// $sql = $this->makeFindAllFromFeedQuery('');
+// $params = array($feedId, $userId);
+// return $this->findAllRows($sql, $params);
+// }
+//
+// public function findAllFromFeedByStatus($feedId, $userId, $status){
+// $sql = $this->makeFindAllFromFeedQuery(' AND ((`*dbprefix*news_items`.`status` & ?) > 0)');
+// $params = array($feedId, $userId, $status);
+// return $this->findAllRows($sql, $params);
+// }
+//
+// public function findAllFromFeedByLastMofified($userId, $feedId, $lastModified){
+// $sql = $this->makeFindAllFromFeedQuery(' AND `*dbprefix*news_items`.last_modified >= ? ');
+// $params = array($feedId, $userId, $lastModified);
+// return $this->findAllRows($sql, $params);
+// }
+//
+// public function findAllFromFeedByOffset($userId, $feedId, $limit, $offset){
+// $sql = $this->makeFindAllFromFeedQuery(' AND `*dbprefix*news_items`.last_modified >= ? ');
+// $params = array($feedId, $userId, $limit, $offset);
+// return $this->findAllRows($sql, $params);
+// }
- public function findAllFromFeed($feedId, $userId){
- $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
- 'WHERE user_id = ? ' .
- 'AND feed_id = ?';
-
- $params = array($feedId, $userId);
- return $this->findAllRows($sql, $params);
- }
-
- public function findAllFromFeedByStatus($feedId, $userId, $status){
- $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
- 'WHERE user_id = ? ' .
- 'AND feed_id = ? ' .
- 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
-
- $params = array($feedId, $userId, $status);
- return $this->findAllRows($sql, $params);
- }
-
-
- public function findAllFromFolder($userId, $folderId){
- $sql = $this->makeFindAllFromFolderQuery('');
- $params = array($userId, $folderId);
- return $this->findAllRows($sql, $params);
- }
-
- public function findAllFromFolderByStatus($userId, $folderId, $status){
- $sql = $this->makeFindAllFromFolderQuery('AND ((`*dbprefix*news_items`.`status` & ?) > 0)');
- $params = array($userId, $folderId, $status);
- return $this->findAllRows($sql, $params);
- }
-
- public function findAllFromFolderByLastMofified($userId, $folderId, $lastModified){
- $sql = $this->makeFindAllFromFolderQuery('AND `*dbprefix*news_items`.last_modified >= ? ');
- $params = array($userId, $folderId, $lastModified);
- return $this->findAllRows($sql, $params);
- }
-
+ /**
+ * Queries to find all items from a folder that belongs to a user
+ */
private function makeFindAllFromFolderQuery($custom) {
return 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
'JOIN `*dbprefix*news_feeds` ' .
'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
+ 'AND ((`*dbprefix*news_items`.`status` & ?) > 0) ' .
$custom;
}
+ public function findAllFromFolderByOffset($userId, $folderId, $status, $limit=null, $offset=null) {
+ $sql = $this->makeFindAllFromFolderQuery('');
+ $params = array($userId, $folderId, $status);
+ return $this->findAllRows($sql, $params, $limit, $offset);
+ }
+
+ public function findAllFromFolderByLastMofified($userId, $folderId, $status, $lastModified) {
+ $sql = $this->makeFindAllFromFolderQuery(' AND (`*dbprefix*news_items`.`last_modified` >= ?)');
+ $params = array($userId, $folderId, $status, $lastModified);
+ return $this->findAllRows($sql, $params);
+ }
+
/*
@@ -123,7 +136,7 @@ class ItemMapper extends NewsMapper {
$item->fromRow($row);
return $item;
- }
+ }
}
diff --git a/tests/db/ItemMapperTest.php b/tests/db/ItemMapperTest.php
index 983bfc933..f8db1da70 100644
--- a/tests/db/ItemMapperTest.php
+++ b/tests/db/ItemMapperTest.php
@@ -33,11 +33,12 @@ class ItemMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility {
private $itemMapper;
private $items;
- protected function setUp(){
+ public function setUp()
+ {
$this->beforeEach();
-
+
$this->itemMapper = new ItemMapper($this->api);
-
+
// create mock items
$item1 = new Item();
$item2 = new Item();
@@ -46,150 +47,169 @@ class ItemMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility {
$item1,
$item2
);
+
+ $this->userId = 'john';
+ $this->id = 3;
+ $this->folderId = 2;
+
+ $this->row = array(
+ array('id' => $this->items[0]->getId()),
+ );
+
+ $this->rows = array(
+ array('id' => $this->items[0]->getId()),
+ array('id' => $this->items[1]->getId())
+ );
+
}
-
+
public function testFind(){
- $userId = 'john';
- $id = 3;
- $rows = array(
- array('id' => $this->items[0]->getId()),
- );
$sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
'JOIN `*dbprefix*news_feeds` ' .
'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
'WHERE `*dbprefix*news_items`.`id` = ? ' .
'AND `*dbprefix*news_feeds`.`user_id` = ? ';
- $this->setMapperResult($sql, array($id, $userId), $rows);
+ $this->setMapperResult($sql, array($this->id, $this->userId), $this->row);
- $result = $this->itemMapper->find($id, $userId);
- $this->assertEquals($this->items[0], $result);
+ $result = $this->itemMapper->find($this->id, $this->userId);
+ $this->assertEquals($this->items, $result);
}
-
- public function testFindNotFound(){
- $userId = 'john';
- $id = 3;
- $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
+//
+// public function testFindNotFound(){
+// $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
+// 'JOIN `*dbprefix*news_feeds` ' .
+// 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
+// 'WHERE `*dbprefix*news_items`.`id` = ? ' .
+// 'AND `*dbprefix*news_feeds`.`user_id` = ? ';
+//
+// $this->setMapperResult($sql, array($id, $userId));
+//
+// $this->setExpectedException('\OCA\AppFramework\Db\DoesNotExistException');
+// $result = $this->itemMapper->find($id, $userId);
+// }
+//
+// public function testFindMoreThanOneResultFound(){
+// $rows = array(
+// array('id' => $this->items[0]->getId()),
+// array('id' => $this->items[1]->getId())
+// );
+// $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
+// 'JOIN `*dbprefix*news_feeds` ' .
+// 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
+// 'WHERE `*dbprefix*news_items`.`id` = ? ' .
+// 'AND `*dbprefix*news_feeds`.`user_id` = ? ';
+//
+//
+// $this->setMapperResult($sql, array($id, $userId), $rows);
+//
+// $this->setExpectedException('\OCA\AppFramework\Db\MultipleObjectsReturnedException');
+// $result = $this->itemMapper->find($id, $userId);
+// }
+//
+// public function testFindAllFromFeed(){
+// $userId = 'john';
+// $feedId = 3;
+// $rows = array(
+// array('id' => $this->items[0]->getId()),
+// array('id' => $this->items[1]->getId())
+// );
+// $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
+// 'WHERE user_id = ? ' .
+// 'AND feed_id = ?';
+//
+// $this->setMapperResult($sql, array($feedId, $userId), $rows);
+// $result = $this->itemMapper->findAllFromFeed($feedId, $userId);
+// $this->assertEquals($this->items, $result);
+//
+// }
+//
+// public function testFindAllFromFeedByStatus(){
+// $userId = 'john';
+// $feedId = 3;
+// $status = 2;
+// $rows = array(
+// array('id' => $this->items[0]->getId()),
+// array('id' => $this->items[1]->getId())
+// );
+// $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
+// 'WHERE user_id = ? ' .
+// 'AND feed_id = ? ' .
+// 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
+//
+// $this->setMapperResult($sql, array($feedId, $userId, $status), $rows);
+// $result = $this->itemMapper->findAllFromFeedByStatus($feedId, $userId, $status);
+// $this->assertEquals($this->items, $result);
+//
+// }
+
+ private function makeFindAllFromFolderQuery($custom) {
+ return 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
'JOIN `*dbprefix*news_feeds` ' .
'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
- 'WHERE `*dbprefix*news_items`.`id` = ? ' .
- 'AND `*dbprefix*news_feeds`.`user_id` = ? ';
-
- $this->setMapperResult($sql, array($id, $userId));
-
- $this->setExpectedException('\OCA\AppFramework\Db\DoesNotExistException');
- $result = $this->itemMapper->find($id, $userId);
+ 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
+ 'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
+ 'AND ((`*dbprefix*news_items`.`status` & ?) > 0) ' .
+ $custom;
}
- public function testFindMoreThanOneResultFound(){
- $userId = 'john';
- $id = 3;
- $rows = array(
- array('id' => $this->items[0]->getId()),
- array('id' => $this->items[1]->getId())
- );
- $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
- 'JOIN `*dbprefix*news_feeds` ' .
- 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
- 'WHERE `*dbprefix*news_items`.`id` = ? ' .
- 'AND `*dbprefix*news_feeds`.`user_id` = ? ';
-
+ public function testFindAllFromFolder() {
+ $sql = $this->makeFindAllFromFolderQuery('');
- $this->setMapperResult($sql, array($id, $userId), $rows);
+ $status = 2;
- $this->setExpectedException('\OCA\AppFramework\Db\MultipleObjectsReturnedException');
- $result = $this->itemMapper->find($id, $userId);
- }
-
- public function testFindAllFromFeed(){
- $userId = 'john';
- $feedId = 3;
- $rows = array(
- array('id' => $this->items[0]->getId()),
- array('id' => $this->items[1]->getId())
- );
- $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
- 'WHERE user_id = ? ' .
- 'AND feed_id = ?';
-
- $this->setMapperResult($sql, array($feedId, $userId), $rows);
- $result = $this->itemMapper->findAllFromFeed($feedId, $userId);
+ $params = array($this->userId, $this->folderId, $status);
+ $this->setMapperResult($sql, $params, $this->rows);
+ $result = $this->itemMapper->findAllFromFolderByOffset($this->userId, $this->folderId, $status);
$this->assertEquals($this->items, $result);
-
+
}
- public function testFindAllFromFeedByStatus(){
- $userId = 'john';
- $feedId = 3;
+ public function testFindAllFromFolderByOffset() {
+ $sql = $this->makeFindAllFromFolderQuery('');
+
$status = 2;
- $rows = array(
- array('id' => $this->items[0]->getId()),
- array('id' => $this->items[1]->getId())
- );
- $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
- 'WHERE user_id = ? ' .
- 'AND feed_id = ? ' .
- 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
-
- $this->setMapperResult($sql, array($feedId, $userId, $status), $rows);
- $result = $this->itemMapper->findAllFromFeedByStatus($feedId, $userId, $status);
+ $limit = 10;
+ $offset = 10;
+
+ $params = array($this->userId, $this->folderId, $status);
+ $this->setMapperResult($sql, $params, $this->rows);
+ $result = $this->itemMapper->findAllFromFolderByOffset($this->userId, $this->folderId, $status, $limit, $offset);
$this->assertEquals($this->items, $result);
-
+
}
- public function testFindAllFromFolder() {
- $userId = 'john';
- $folderId = 3;
+ public function testFindAllFromFolderByLastModified() {
+ $sql = $this->makeFindAllFromFolderQuery(' AND (`*dbprefix*news_items`.`last_modified` >= ?)');
- $rows = array(
- array('id' => $this->items[0]->getId()),
- array('id' => $this->items[1]->getId())
- );
+ $status = 2;
+ $lastModified = 100;
- $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
- 'JOIN `*dbprefix*news_feeds` ' .
- 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
- 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
- 'AND `*dbprefix*news_feeds`.`folder_id` = ? ';
-
- $this->setMapperResult($sql, array($userId, $folderId), $rows);
- $result = $this->itemMapper->findAllFromFolder($userId, $folderId);
+ $params = array($this->userId, $this->folderId, $status, $lastModified);
+ $this->setMapperResult($sql, $params, $this->rows);
+ $result = $this->itemMapper->findAllFromFolderByLastMofified($this->userId, $this->folderId, $status, $lastModified);
$this->assertEquals($this->items, $result);
}
- public function testFindAllFromFolderByStatus() {
- $userId = 'john';
- $folderId = 3;
- $status = 2;
- $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
- 'JOIN `*dbprefix*news_feeds` ' .
- 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
- 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
- 'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
- 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
-
- $this->setMapperResult($sql, array($userId, $folderId, $status));
- $result = $this->itemMapper->findAllFromFolderByStatus($userId, $folderId, $status);
-
- }
-
- public function testFindAllFromFolderByLastModified() {
- $userId = 'john';
- $folderId = 3;
- $lastModified = 123;
-
- $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
- 'JOIN `*dbprefix*news_feeds` ' .
- 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
- 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
- 'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
- 'AND `*dbprefix*news_items`.last_modified >= ? ';
-
- $this->setMapperResult($sql, array($userId, $folderId, $lastModified));
- $result = $this->itemMapper->findAllFromFolderByLastMofified($userId, $folderId, $lastModified);
- }
+// }
+//
+// public function testFindAllFromFolderByLastModified() {
+// $userId = 'john';
+// $folderId = 3;
+// $lastModified = 123;
+//
+// $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
+// 'JOIN `*dbprefix*news_feeds` ' .
+// 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
+// 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
+// 'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
+// 'AND `*dbprefix*news_items`.last_modified >= ? ';
+//
+// $this->setMapperResult($sql, array($userId, $folderId, $lastModified));
+// $result = $this->itemMapper->findAllFromFolderByLastMofified($userId, $folderId, $lastModified);
+// }
} \ No newline at end of file