aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_versions/tests/Versions
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_versions/tests/Versions')
-rw-r--r--apps/files_versions/tests/Versions/VersionManagerTest.php83
1 files changed, 76 insertions, 7 deletions
diff --git a/apps/files_versions/tests/Versions/VersionManagerTest.php b/apps/files_versions/tests/Versions/VersionManagerTest.php
index a50781b899d..79caa65d5f1 100644
--- a/apps/files_versions/tests/Versions/VersionManagerTest.php
+++ b/apps/files_versions/tests/Versions/VersionManagerTest.php
@@ -6,12 +6,16 @@ declare(strict_types=1);
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-namespace OCA\files_versions\tests\Versions;
+namespace OCA\Files_Versions\Tests\Versions;
use OC\Files\Storage\Local;
+use OCA\Files_Versions\Events\VersionRestoredEvent;
+use OCA\Files_Versions\Versions\IVersion;
use OCA\Files_Versions\Versions\IVersionBackend;
use OCA\Files_Versions\Versions\VersionManager;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Storage\IStorage;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class VersionManagerTest extends TestCase {
@@ -22,15 +26,16 @@ class VersionManagerTest extends TestCase {
return $backend;
}
- private function getStorage(string $class): IStorage {
+ private function getStorage(string $class): IStorage&MockObject {
return $this->getMockBuilder($class)
->disableOriginalConstructor()
- ->setMethodsExcept(['instanceOfStorage'])
+ ->onlyMethods(array_diff(get_class_methods($class), ['instanceOfStorage']))
->getMock();
}
public function testGetBackendSingle(): void {
- $manager = new VersionManager();
+ $dispatcher = $this->createMock(IEventDispatcher::class);
+ $manager = new VersionManager($dispatcher);
$backend = $this->getBackend();
$manager->registerBackend(IStorage::class, $backend);
@@ -38,7 +43,8 @@ class VersionManagerTest extends TestCase {
}
public function testGetBackendMoreSpecific(): void {
- $manager = new VersionManager();
+ $dispatcher = $this->createMock(IEventDispatcher::class);
+ $manager = new VersionManager($dispatcher);
$backend1 = $this->getBackend();
$backend2 = $this->getBackend();
$manager->registerBackend(IStorage::class, $backend1);
@@ -48,7 +54,8 @@ class VersionManagerTest extends TestCase {
}
public function testGetBackendNoUse(): void {
- $manager = new VersionManager();
+ $dispatcher = $this->createMock(IEventDispatcher::class);
+ $manager = new VersionManager($dispatcher);
$backend1 = $this->getBackend();
$backend2 = $this->getBackend(false);
$manager->registerBackend(IStorage::class, $backend1);
@@ -58,7 +65,8 @@ class VersionManagerTest extends TestCase {
}
public function testGetBackendMultiple(): void {
- $manager = new VersionManager();
+ $dispatcher = $this->createMock(IEventDispatcher::class);
+ $manager = new VersionManager($dispatcher);
$backend1 = $this->getBackend();
$backend2 = $this->getBackend(false);
$backend3 = $this->getBackend();
@@ -68,4 +76,65 @@ class VersionManagerTest extends TestCase {
$this->assertEquals($backend3, $manager->getBackendForStorage($this->getStorage(Local::class)));
}
+
+ public function testRollbackSuccess(): void {
+ $versionMock = $this->createMock(IVersion::class);
+ $backendMock = $this->createMock(IVersionBackend::class);
+
+ $backendMock->expects($this->once())
+ ->method('rollback')
+ ->with($versionMock)
+ ->willReturn(true);
+
+ $versionMock->method('getBackend')->willReturn($backendMock);
+
+ $dispatcherMock = $this->createMock(IEventDispatcher::class);
+ $dispatcherMock->expects($this->once())
+ ->method('dispatchTyped')
+ ->with($this->isInstanceOf(VersionRestoredEvent::class));
+
+ $manager = new VersionManager($dispatcherMock);
+
+ $this->assertTrue($manager->rollback($versionMock));
+ }
+
+ public function testRollbackNull(): void {
+ $versionMock = $this->createMock(IVersion::class);
+ $backendMock = $this->createMock(IVersionBackend::class);
+
+ $backendMock->expects($this->once())
+ ->method('rollback')
+ ->with($versionMock)
+ ->willReturn(null);
+
+ $versionMock->method('getBackend')->willReturn($backendMock);
+
+ $dispatcherMock = $this->createMock(IEventDispatcher::class);
+ $dispatcherMock->expects($this->once())
+ ->method('dispatchTyped')
+ ->with($this->isInstanceOf(VersionRestoredEvent::class));
+
+ $manager = new VersionManager($dispatcherMock);
+
+ $this->assertNull($manager->rollback($versionMock));
+ }
+
+ public function testRollbackFailure(): void {
+ $versionMock = $this->createMock(IVersion::class);
+ $backendMock = $this->createMock(IVersionBackend::class);
+
+ $backendMock->expects($this->once())
+ ->method('rollback')
+ ->with($versionMock)
+ ->willReturn(false);
+
+ $versionMock->method('getBackend')->willReturn($backendMock);
+
+ $dispatcherMock = $this->createMock(IEventDispatcher::class);
+ $dispatcherMock->expects($this->never())->method('dispatchTyped');
+
+ $manager = new VersionManager($dispatcherMock);
+
+ $this->assertFalse($manager->rollback($versionMock));
+ }
}