summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2015-02-15 17:01:00 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2015-02-15 17:01:00 +0100
commit0368e1e3ce51647869a00cd08871a7baf29de19f (patch)
treef9ccab09df14378490a7f6979fef490a1e72c31a
parentbec3f917c331a17841da9aac7dad510707b24492 (diff)
When passing a negative batchSizes to the item API, all items will be returned
-rw-r--r--CHANGELOG.md4
-rw-r--r--db/itemmapper.php17
-rw-r--r--tests/unit/db/ItemMapperTest.php57
-rw-r--r--tests/unit/db/mappertestutility.php10
4 files changed, 73 insertions, 15 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e02ffe224..a6e0c517e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+owncloud-news (5.2.3)
+* **Enhancement**: Push explore button at the bottom of the feed list
+* **Enhancement**: When passing a negative batchSizes to the item API, all items will be returned
+
owncloud-news (5.2.2)
* **Security**: Only allow YouTube and Vimeo to embed iframes if they use HTTPS to prevent mixed active content iframe attacks
diff --git a/db/itemmapper.php b/db/itemmapper.php
index dec80894f..a41ecfd66 100644
--- a/db/itemmapper.php
+++ b/db/itemmapper.php
@@ -172,6 +172,16 @@ class ItemMapper extends NewsMapper {
}
+ private function findEntitiesIgnoringNegativeLimit($sql, $params, $limit) {
+ // ignore limit if negative to offer a way to return all feeds
+ if ($limit >= 0) {
+ return $this->findEntities($sql, $params, $limit);
+ } else {
+ return $this->findEntities($sql, $params);
+ }
+ }
+
+
public function findAllFeed($id, $limit, $offset, $status, $oldestFirst,
$userId){
$params = [$userId, $id];
@@ -182,7 +192,7 @@ class ItemMapper extends NewsMapper {
$params[] = $offset;
}
$sql = $this->makeSelectQueryStatus($sql, $status, $oldestFirst);
- return $this->findEntities($sql, $params, $limit);
+ return $this->findEntitiesIgnoringNegativeLimit($sql, $params, $limit);
}
@@ -196,7 +206,7 @@ class ItemMapper extends NewsMapper {
$params[] = $offset;
}
$sql = $this->makeSelectQueryStatus($sql, $status, $oldestFirst);
- return $this->findEntities($sql, $params, $limit);
+ return $this->findEntitiesIgnoringNegativeLimit($sql, $params, $limit);
}
@@ -209,7 +219,8 @@ class ItemMapper extends NewsMapper {
$params[] = $offset;
}
$sql = $this->makeSelectQueryStatus($sql, $status, $oldestFirst);
- return $this->findEntities($sql, $params, $limit);
+
+ return $this->findEntitiesIgnoringNegativeLimit($sql, $params, $limit);
}
diff --git a/tests/unit/db/ItemMapperTest.php b/tests/unit/db/ItemMapperTest.php
index 26c9074dd..adb1dfe7a 100644
--- a/tests/unit/db/ItemMapperTest.php
+++ b/tests/unit/db/ItemMapperTest.php
@@ -236,7 +236,7 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
'AND `items`.`id` < ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status);
$params = [$this->user, $this->id, $this->offset];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAllFeed($this->id, $this->limit,
$this->offset, $this->status, false, $this->user);
@@ -244,12 +244,25 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
}
+ public function testFindAllFeedNegativeLimit(){
+ $sql = 'AND `items`.`feed_id` = ? ' .
+ 'AND `items`.`id` < ? ';
+ $sql = $this->makeSelectQueryStatus($sql, $this->status);
+ $params = [$this->user, $this->id, $this->offset];
+ $this->setMapperResult($sql, $params, $this->rows);
+ $result = $this->mapper->findAllFeed($this->id, -1,
+ $this->offset, $this->status, false, $this->user);
+
+ $this->assertEquals($this->items, $result);
+ }
+
+
public function testFindAllFeedOldestFirst(){
$sql = 'AND `items`.`feed_id` = ? ' .
'AND `items`.`id` > ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status, true);
$params = [$this->user, $this->id, $this->offset];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAllFeed($this->id, $this->limit,
$this->offset, $this->status, true, $this->user);
@@ -261,7 +274,7 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
$sql = 'AND `items`.`feed_id` = ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status);
$params = [$this->user, $this->id];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAllFeed($this->id, $this->limit,
0, $this->status, false, $this->user);
@@ -274,7 +287,7 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
'AND `items`.`id` < ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status);
$params = [$this->user, $this->id, $this->offset];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAllFolder($this->id, $this->limit,
$this->offset, $this->status, false, $this->user);
@@ -282,12 +295,26 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
}
+ public function testFindAllFolderNegativeLimit(){
+ $sql = 'AND `feeds`.`folder_id` = ? ' .
+ 'AND `items`.`id` < ? ';
+ $sql = $this->makeSelectQueryStatus($sql, $this->status);
+ $params = [$this->user, $this->id, $this->offset];
+ $this->setMapperResult($sql, $params, $this->rows);
+ $result = $this->mapper->findAllFolder($this->id, -1,
+ $this->offset, $this->status, false, $this->user);
+
+ $this->assertEquals($this->items, $result);
+ }
+
+
+
public function testFindAllFolderOldestFirst(){
$sql = 'AND `feeds`.`folder_id` = ? ' .
'AND `items`.`id` > ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status, true);
$params = [$this->user, $this->id, $this->offset];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAllFolder($this->id, $this->limit,
$this->offset, $this->status, true, $this->user);
@@ -299,7 +326,7 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
$sql = 'AND `feeds`.`folder_id` = ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status);
$params = [$this->user, $this->id];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAllFolder($this->id, $this->limit,
0, $this->status, false, $this->user);
@@ -311,7 +338,7 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
$sql = 'AND `items`.`id` < ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status);
$params = [$this->user, $this->offset];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAll($this->limit,
$this->offset, $this->status, false, $this->user);
@@ -319,11 +346,23 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
}
+ public function testFindAllNegativeLimit(){
+ $sql = 'AND `items`.`id` < ? ';
+ $sql = $this->makeSelectQueryStatus($sql, $this->status);
+ $params = [$this->user, $this->offset];
+ $this->setMapperResult($sql, $params, $this->rows, null);
+ $result = $this->mapper->findAll(-1,
+ $this->offset, $this->status, false, $this->user);
+
+ $this->assertEquals($this->items, $result);
+ }
+
+
public function testFindAllOldestFirst(){
$sql = 'AND `items`.`id` > ? ';
$sql = $this->makeSelectQueryStatus($sql, $this->status, true);
$params = [$this->user, $this->offset];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAll($this->limit,
$this->offset, $this->status, true, $this->user);
@@ -334,7 +373,7 @@ class ItemMapperTest extends \OCA\News\Tests\Unit\Db\MapperTestUtility {
public function testFindAllOffsetZero(){
$sql = $this->makeSelectQueryStatus('', $this->status);
$params = [$this->user];
- $this->setMapperResult($sql, $params, $this->rows);
+ $this->setMapperResult($sql, $params, $this->rows, $this->limit);
$result = $this->mapper->findAll($this->limit,
0, $this->status, false, $this->user);
diff --git a/tests/unit/db/mappertestutility.php b/tests/unit/db/mappertestutility.php
index 49e985f3b..278cbc475 100644
--- a/tests/unit/db/mappertestutility.php
+++ b/tests/unit/db/mappertestutility.php
@@ -68,7 +68,7 @@ abstract class MapperTestUtility extends \PHPUnit_Framework_TestCase {
* of the database query. If not provided, it wont be assumed that fetch
* will be called on the result
*/
- protected function setMapperResult($sql, $arguments=array(), $returnRows=array(),
+ protected function setMapperResult($sql, $arguments=[], $returnRows=[],
$limit=null, $offset=null, $expectClose=false){
$this->iterators[] = new ArgumentIterator($returnRows);
@@ -135,12 +135,16 @@ abstract class MapperTestUtility extends \PHPUnit_Framework_TestCase {
if($limit === null && $offset === null) {
$this->db->expects($this->at($this->prepareAt))
->method('prepareQuery')
- ->with($this->equalTo($sql))
+ ->with($this->equalTo($sql),
+ $this->equalTo(null),
+ $this->equalTo(null))
->will(($this->returnValue($this->query)));
} elseif($limit !== null && $offset === null) {
$this->db->expects($this->at($this->prepareAt))
->method('prepareQuery')
- ->with($this->equalTo($sql), $this->equalTo($limit))
+ ->with($this->equalTo($sql),
+ $this->equalTo($limit),
+ $this->equalTo(null))
->will(($this->returnValue($this->query)));
} elseif($limit === null && $offset !== null) {
$this->db->expects($this->at($this->prepareAt))