Skip to content
Snippets Groups Projects
Unverified Commit 881c7275 authored by Joas Schilling's avatar Joas Schilling
Browse files

Add tests for getFile()

parent c031c77e
No related branches found
No related tags found
No related merge requests found
......@@ -223,28 +223,28 @@ class Provider implements IProvider {
case 'deleted_self':
case 'restored_self':
return [
'file' => $this->getRichFileParameter($parameters[0], $event),
'file' => $this->getFile($parameters[0], $event),
];
case 'created_by':
case 'changed_by':
case 'deleted_by':
case 'restored_by':
return [
'file' => $this->getRichFileParameter($parameters[0], $event),
'user' => $this->getRichUserParameter($parameters[1]),
'file' => $this->getFile($parameters[0], $event),
'user' => $this->getUser($parameters[1]),
];
case 'renamed_self':
case 'moved_self':
return [
'newfile' => $this->getRichFileParameter($parameters[0]),
'oldfile' => $this->getRichFileParameter($parameters[1]),
'newfile' => $this->getFile($parameters[0]),
'oldfile' => $this->getFile($parameters[1]),
];
case 'renamed_by':
case 'moved_by':
return [
'newfile' => $this->getRichFileParameter($parameters[0]),
'user' => $this->getRichUserParameter($parameters[1]),
'oldfile' => $this->getRichFileParameter($parameters[2]),
'newfile' => $this->getFile($parameters[0]),
'user' => $this->getUser($parameters[1]),
'oldfile' => $this->getFile($parameters[2]),
];
}
return [];
......@@ -256,10 +256,10 @@ class Provider implements IProvider {
* @return array
* @throws \InvalidArgumentException
*/
protected function getRichFileParameter($parameter, IEvent $event = null) {
protected function getFile($parameter, IEvent $event = null) {
if (is_array($parameter)) {
$path = reset($parameter);
$id = key($parameter);
$id = (string) key($parameter);
} else if ($event !== null) {
// Legacy from before ownCloud 8.2
$path = $parameter;
......@@ -267,6 +267,7 @@ class Provider implements IProvider {
} else {
throw new \InvalidArgumentException('Could not generate file parameter');
}
return [
'type' => 'file',
'id' => $id,
......@@ -276,7 +277,7 @@ class Provider implements IProvider {
];
}
protected function getRichUserParameter($uid) {
protected function getUser($uid) {
if (!isset($this->displayNames[$uid])) {
$this->displayNames[$uid] = $this->getDisplayName($uid);
}
......
<?php
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program 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 program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Files\Tests\Activity;
use OCA\Files\Activity\Provider;
use OCP\Activity\IEvent;
use OCP\Activity\IEventMerger;
use OCP\Activity\IManager;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\L10N\IFactory;
use Test\TestCase;
/**
* Class ProviderTest
*
* @package OCA\Files\Tests\Activity
*/
class ProviderTest extends TestCase {
/** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */
protected $l10nFactory;
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
protected $url;
/** @var IManager|\PHPUnit_Framework_MockObject_MockObject */
protected $activityManager;
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
protected $userManager;
/** @var IEventMerger|\PHPUnit_Framework_MockObject_MockObject */
protected $eventMerger;
public function setUp() {
parent::setUp();
$this->l10nFactory = $this->createMock(IFactory::class);
$this->url = $this->createMock(IURLGenerator::class);
$this->activityManager = $this->createMock(IManager::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->eventMerger = $this->createMock(IEventMerger::class);
}
/**
* @param string[] $methods
* @return Provider|\PHPUnit_Framework_MockObject_MockObject
*/
protected function getProvider(array $methods = []) {
if (!empty($methods)) {
return $this->getMockBuilder(Provider::class)
->setConstructorArgs([
$this->l10nFactory,
$this->url,
$this->activityManager,
$this->userManager,
$this->eventMerger,
])
->setMethods($methods)
->getMock();
}
return new Provider(
$this->l10nFactory,
$this->url,
$this->activityManager,
$this->userManager,
$this->eventMerger
);
}
public function dataGetFile() {
return [
[[42 => '/FortyTwo.txt'], null, '42', 'FortyTwo.txt', 'FortyTwo.txt'],
[['23' => '/Twenty/Three.txt'], null, '23', 'Three.txt', 'Twenty/Three.txt'],
['/Foo/Bar.txt', '128', '128', 'Bar.txt', 'Foo/Bar.txt'], // Legacy from ownCloud 8.2 and before
];
}
/**
* @dataProvider dataGetFile
* @param mixed $parameter
* @param mixed $eventId
* @param int $id
* @param string $name
* @param string $path
*/
public function testGetFile($parameter, $eventId, $id, $name, $path) {
$provider = $this->getProvider();
if ($eventId !== null) {
$event = $this->createMock(IEvent::class);
$event->expects($this->once())
->method('getObjectId')
->willReturn($eventId);
} else {
$event = null;
}
$this->url->expects($this->once())
->method('linkToRouteAbsolute')
->with('files.viewcontroller.showFile', ['fileid' => $id])
->willReturn('link-' . $id);
$result = self::invokePrivate($provider, 'getFile', [$parameter, $event]);
$this->assertSame('file', $result['type']);
$this->assertSame($id, $result['id']);
$this->assertSame($name, $result['name']);
$this->assertSame($path, $result['path']);
$this->assertSame('link-' . $id, $result['link']);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testGetFileThrows() {
$provider = $this->getProvider();
self::invokePrivate($provider, 'getFile', ['/Foo/Bar.txt', null]);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment