mirror of
https://github.com/chylex/Nextcloud-News.git
synced 2025-04-12 10:15:44 +02:00
283 lines
8.3 KiB
PHP
283 lines
8.3 KiB
PHP
<?php
|
|
/**
|
|
* Nextcloud - News
|
|
*
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later. See the COPYING file.
|
|
*
|
|
* @author Alessandro Cosentino <cosenal@gmail.com>
|
|
* @author Bernhard Posselt <dev@bernhard-posselt.com>
|
|
* @copyright Alessandro Cosentino 2012
|
|
* @copyright Bernhard Posselt 2012, 2014
|
|
*/
|
|
|
|
namespace OCA\News\Service;
|
|
|
|
use \OCA\News\Db\Folder;
|
|
|
|
|
|
class FolderServiceTest extends \PHPUnit_Framework_TestCase {
|
|
|
|
private $folderMapper;
|
|
private $folderService;
|
|
private $time;
|
|
private $user;
|
|
private $autoPurgeMinimumInterval;
|
|
private $l10n;
|
|
|
|
protected function setUp(){
|
|
$this->l10n = $this->getMockBuilder('\OCP\IL10N')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->time = 222;
|
|
$timeFactory = $this->getMockBuilder('\OCA\News\Utility\Time')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$timeFactory->expects($this->any())
|
|
->method('getTime')
|
|
->will($this->returnValue($this->time));
|
|
$this->folderMapper = $this->getMockBuilder(
|
|
'\OCA\News\Db\FolderMapper')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$this->autoPurgeMinimumInterval = 10;
|
|
$config = $this->getMockBuilder(
|
|
'\OCA\News\Config\Config')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$config->expects($this->any())
|
|
->method('getAutoPurgeMinimumInterval')
|
|
->will($this->returnValue($this->autoPurgeMinimumInterval));
|
|
$this->folderService = new FolderService(
|
|
$this->folderMapper, $this->l10n, $timeFactory, $config);
|
|
$this->user = 'hi';
|
|
}
|
|
|
|
|
|
public function testFindAll(){
|
|
$userId = 'jack';
|
|
$return = 'hi';
|
|
$this->folderMapper->expects($this->once())
|
|
->method('findAllFromUser')
|
|
->with($this->equalTo($userId))
|
|
->will($this->returnValue($return));
|
|
|
|
$result = $this->folderService->findAll($userId);
|
|
|
|
$this->assertEquals($return, $result);
|
|
}
|
|
|
|
|
|
public function testCreate(){
|
|
$folder = new Folder();
|
|
$folder->setName('hey');
|
|
$folder->setParentId(5);
|
|
$folder->setUserId('john');
|
|
$folder->setOpened(true);
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('insert')
|
|
->with($this->equalTo($folder))
|
|
->will($this->returnValue($folder));
|
|
|
|
$result = $this->folderService->create('hey', 'john', 5);
|
|
|
|
$this->assertEquals($folder, $result);
|
|
}
|
|
|
|
|
|
public function testCreateThrowsExWhenFolderNameExists(){
|
|
$folderName = 'hihi';
|
|
$rows = [['id' => 1]];
|
|
|
|
$this->l10n->expects($this->once())
|
|
->method('t');
|
|
$this->folderMapper->expects($this->once())
|
|
->method('findByName')
|
|
->with($this->equalTo($folderName))
|
|
->will($this->returnValue($rows));
|
|
|
|
$this->setExpectedException(
|
|
'\OCA\News\Service\ServiceConflictException'
|
|
);
|
|
$this->folderService->create($folderName, 'john', 3);
|
|
}
|
|
|
|
|
|
public function testCreateThrowsExWhenFolderNameEmpty(){
|
|
$folderName = '';
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('findByName')
|
|
->with($this->equalTo($folderName))
|
|
->will($this->returnValue([]));
|
|
|
|
$this->setExpectedException(
|
|
'\OCA\News\Service\ServiceValidationException'
|
|
);
|
|
$this->folderService->create($folderName, 'john', 3);
|
|
}
|
|
|
|
|
|
public function testOpen(){
|
|
$folder = new Folder();
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('find')
|
|
->with($this->equalTo(3))
|
|
->will($this->returnValue($folder));
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('update')
|
|
->with($this->equalTo($folder));
|
|
|
|
$this->folderService->open(3, false, '');
|
|
|
|
$this->assertFalse($folder->getOpened());
|
|
|
|
}
|
|
|
|
|
|
public function testRename(){
|
|
$folder = new Folder();
|
|
$folder->setName('jooohn');
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('find')
|
|
->with($this->equalTo(3))
|
|
->will($this->returnValue($folder));
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('update')
|
|
->with($this->equalTo($folder));
|
|
|
|
$this->folderService->rename(3, 'bogus', '');
|
|
|
|
$this->assertEquals('bogus', $folder->getName());
|
|
}
|
|
|
|
|
|
public function testRenameThrowsExWhenFolderNameExists(){
|
|
$folderName = 'hihi';
|
|
$rows = [['id' => 1]];
|
|
|
|
$this->l10n->expects($this->once())
|
|
->method('t');
|
|
$this->folderMapper->expects($this->once())
|
|
->method('findByName')
|
|
->with($this->equalTo($folderName))
|
|
->will($this->returnValue($rows));
|
|
|
|
$this->setExpectedException(
|
|
'\OCA\News\Service\ServiceConflictException'
|
|
);
|
|
$this->folderService->rename(3, $folderName, 'john');
|
|
}
|
|
|
|
|
|
public function testRenameThrowsExWhenFolderNameEmpty(){
|
|
$folderName = '';
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('findByName')
|
|
->with($this->equalTo($folderName))
|
|
->will($this->returnValue([]));
|
|
|
|
$this->setExpectedException(
|
|
'\OCA\News\Service\ServiceValidationException'
|
|
);
|
|
$this->folderService->rename(3, $folderName, 'john');
|
|
}
|
|
|
|
|
|
public function testMarkDeleted() {
|
|
$id = 3;
|
|
$folder = new Folder();
|
|
$folder2 = new Folder();
|
|
$folder2->setDeletedAt($this->time);
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('find')
|
|
->with($this->equalTo($id), $this->equalTo($this->user))
|
|
->will($this->returnValue($folder));
|
|
$this->folderMapper->expects($this->once())
|
|
->method('update')
|
|
->with($this->equalTo($folder2));
|
|
|
|
$this->folderService->markDeleted($id, $this->user);
|
|
}
|
|
|
|
|
|
public function testUnmarkDeleted() {
|
|
$id = 3;
|
|
$folder = new Folder();
|
|
$folder2 = new Folder();
|
|
$folder2->setDeletedAt(0);
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('find')
|
|
->with($this->equalTo($id), $this->equalTo($this->user))
|
|
->will($this->returnValue($folder));
|
|
$this->folderMapper->expects($this->once())
|
|
->method('update')
|
|
->with($this->equalTo($folder2));
|
|
|
|
$this->folderService->unmarkDeleted($id, $this->user);
|
|
}
|
|
|
|
public function testPurgeDeleted(){
|
|
$folder1 = new Folder();
|
|
$folder1->setId(3);
|
|
$folder2 = new Folder();
|
|
$folder2->setId(5);
|
|
$feeds = [$folder1, $folder2];
|
|
|
|
$time = $this->time - $this->autoPurgeMinimumInterval;
|
|
$this->folderMapper->expects($this->once())
|
|
->method('getToDelete')
|
|
->with($this->equalTo($time), $this->equalTo($this->user))
|
|
->will($this->returnValue($feeds));
|
|
$this->folderMapper->expects($this->at(1))
|
|
->method('delete')
|
|
->with($this->equalTo($folder1));
|
|
$this->folderMapper->expects($this->at(2))
|
|
->method('delete')
|
|
->with($this->equalTo($folder2));
|
|
|
|
$this->folderService->purgeDeleted($this->user);
|
|
}
|
|
|
|
|
|
public function testPurgeDeletedNoInterval(){
|
|
$folder1 = new Folder();
|
|
$folder1->setId(3);
|
|
$folder2 = new Folder();
|
|
$folder2->setId(5);
|
|
$feeds = [$folder1, $folder2];
|
|
|
|
$this->folderMapper->expects($this->once())
|
|
->method('getToDelete')
|
|
->with($this->equalTo(null), $this->equalTo($this->user))
|
|
->will($this->returnValue($feeds));
|
|
$this->folderMapper->expects($this->at(1))
|
|
->method('delete')
|
|
->with($this->equalTo($folder1));
|
|
$this->folderMapper->expects($this->at(2))
|
|
->method('delete')
|
|
->with($this->equalTo($folder2));
|
|
|
|
$this->folderService->purgeDeleted($this->user, false);
|
|
}
|
|
|
|
|
|
public function testDeleteUser() {
|
|
$this->folderMapper->expects($this->once())
|
|
->method('deleteUser')
|
|
->will($this->returnValue($this->user));
|
|
|
|
$this->folderService->deleteUser($this->user);
|
|
}
|
|
|
|
|
|
}
|