mirror of
https://github.com/chylex/Nextcloud-News.git
synced 2025-04-17 16:15:43 +02:00
143 lines
3.9 KiB
PHP
143 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* ownCloud - News
|
|
*
|
|
* @author Alessandro Cosentino
|
|
* @author Bernhard Posselt
|
|
* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
|
|
* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
namespace OCA\News\External;
|
|
|
|
use \OCA\News\BusinessLayer\BusinessLayerException;
|
|
|
|
use \OCA\News\Db\Folder;
|
|
use \OCA\News\Db\Feed;
|
|
use \OCA\News\Db\Item;
|
|
|
|
require_once(__DIR__ . "/../../classloader.php");
|
|
|
|
|
|
class FeedAPITest extends \PHPUnit_Framework_TestCase {
|
|
|
|
private $folderBusinessLayer;
|
|
private $feedBusinessLayer;
|
|
private $itemBusinessLayer;
|
|
private $feedAPI;
|
|
private $api;
|
|
private $user;
|
|
private $request;
|
|
|
|
protected function setUp() {
|
|
$this->api = $this->getMockBuilder(
|
|
'\OCA\AppFramework\Core\API')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->request = $this->getMockBuilder(
|
|
'\OCA\AppFramework\Http\Request')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->folderBusinessLayer = $this->getMockBuilder(
|
|
'\OCA\News\BusinessLayer\FolderBusinessLayer')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->feedBusinessLayer = $this->getMockBuilder(
|
|
'\OCA\News\BusinessLayer\FeedBusinessLayer')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->itemBusinessLayer = $this->getMockBuilder(
|
|
'\OCA\News\BusinessLayer\ItemBusinessLayer')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->feedAPI = new FeedAPI(
|
|
$this->api,
|
|
$this->request,
|
|
$this->folderBusinessLayer,
|
|
$this->feedBusinessLayer,
|
|
$this->itemBusinessLayer
|
|
);
|
|
$this->user = 'tom';
|
|
}
|
|
|
|
|
|
public function testGetAll() {
|
|
$feeds = array(
|
|
new Feed()
|
|
);
|
|
$starredCount = 3;
|
|
$newestItemId = 2;
|
|
|
|
$this->api->expects($this->once())
|
|
->method('getUserId')
|
|
->will($this->returnValue($this->user));
|
|
$this->itemBusinessLayer->expects($this->once())
|
|
->method('starredCount')
|
|
->with($this->equalTo($this->user))
|
|
->will($this->returnValue($starredCount));
|
|
$this->itemBusinessLayer->expects($this->once())
|
|
->method('getNewestItemId')
|
|
->with($this->equalTo($this->user))
|
|
->will($this->returnValue($newestItemId));
|
|
$this->feedBusinessLayer->expects($this->once())
|
|
->method('findAll')
|
|
->with($this->equalTo($this->user))
|
|
->will($this->returnValue($feeds));
|
|
|
|
$response = $this->feedAPI->getAll();
|
|
|
|
$this->assertEquals(array(
|
|
'feeds' => array($feeds[0]->toAPI()),
|
|
'starredCount' => $starredCount,
|
|
'newestItemId' => $newestItemId
|
|
), $response->getData());
|
|
}
|
|
|
|
|
|
public function testGetAllNoNewestItemId() {
|
|
$feeds = array(
|
|
new Feed()
|
|
);
|
|
$starredCount = 3;
|
|
|
|
$this->api->expects($this->once())
|
|
->method('getUserId')
|
|
->will($this->returnValue($this->user));
|
|
$this->itemBusinessLayer->expects($this->once())
|
|
->method('starredCount')
|
|
->with($this->equalTo($this->user))
|
|
->will($this->returnValue($starredCount));
|
|
$this->itemBusinessLayer->expects($this->once())
|
|
->method('getNewestItemId')
|
|
->with($this->equalTo($this->user))
|
|
->will($this->throwException(new BusinessLayerException('')));
|
|
$this->feedBusinessLayer->expects($this->once())
|
|
->method('findAll')
|
|
->with($this->equalTo($this->user))
|
|
->will($this->returnValue($feeds));
|
|
|
|
$response = $this->feedAPI->getAll();
|
|
|
|
$this->assertEquals(array(
|
|
'feeds' => array($feeds[0]->toAPI()),
|
|
'starredCount' => $starredCount,
|
|
), $response->getData());
|
|
}
|
|
|
|
|
|
} |