summaryrefslogtreecommitdiffstats
path: root/tests/lib/Preview
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2018-05-09 23:00:21 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2018-05-14 13:30:22 +0200
commit0dffd07a60d5c928a0f380e6c072b424bf0184c0 (patch)
tree833e7cd7815f66aaa8d813e3e43204ff0c548045 /tests/lib/Preview
parent047cf5de078a3441b88ca0757a6e842aaf6922a9 (diff)
downloadnextcloud-server-0dffd07a60d5c928a0f380e6c072b424bf0184c0.tar.gz
nextcloud-server-0dffd07a60d5c928a0f380e6c072b424bf0184c0.zip
Add tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'tests/lib/Preview')
-rw-r--r--tests/lib/Preview/BackgroundCleanupJobTest.php159
1 files changed, 159 insertions, 0 deletions
diff --git a/tests/lib/Preview/BackgroundCleanupJobTest.php b/tests/lib/Preview/BackgroundCleanupJobTest.php
new file mode 100644
index 00000000000..9d10da025dd
--- /dev/null
+++ b/tests/lib/Preview/BackgroundCleanupJobTest.php
@@ -0,0 +1,159 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace Test\Preview;
+
+use OC\Files\AppData\Factory;
+use OC\Preview\BackgroundCleanupJob;
+use OC\PreviewManager;
+use OCP\Files\IRootFolder;
+use OCP\IDBConnection;
+use Test\Traits\MountProviderTrait;
+use Test\Traits\UserTrait;
+
+/**
+ * Class BackgroundCleanupJobTest
+ *
+ * @group DB
+ *
+ * @package Test\Preview
+ */
+class BackgroundCleanupJobTest extends \Test\TestCase {
+
+ use MountProviderTrait;
+ use UserTrait;
+
+ /** @var string */
+ private $userId;
+
+ /** @var bool */
+ private $trashEnabled;
+
+ /** @var Factory */
+ private $appDataFactory;
+
+ /** @var IDBConnection */
+ private $connection;
+
+ /** @var PreviewManager */
+ private $previewManager;
+
+ /** @var IRootFolder */
+ private $rootFolder;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->userId = $this->getUniqueID();
+ $this->createUser($this->userId, $this->userId);
+
+ $storage = new \OC\Files\Storage\Temporary([]);
+ $this->registerMount($this->userId, $storage, '');
+
+ $this->loginAsUser($this->userId);
+ $this->logout();
+ $this->loginAsUser($this->userId);
+
+ $appManager = \OC::$server->getAppManager();
+ $this->trashEnabled = $appManager->isEnabledForUser('files_trashbin', $this->userId);
+ $appManager->disableApp('files_trashbin');
+
+ $this->appDataFactory = \OC::$server->query(Factory::class);
+ $this->connection = \OC::$server->getDatabaseConnection();
+ $this->previewManager = \OC::$server->getPreviewManager();
+ $this->rootFolder = \OC::$server->getRootFolder();
+ }
+
+ public function tearDown() {
+ if ($this->trashEnabled) {
+ $appManager = \OC::$server->getAppManager();
+ $appManager->enableApp('files_trashbin');
+ }
+
+ $this->logout();
+
+ return parent::tearDown();
+ }
+
+ private function setup11Previews(): array {
+ $userFolder = $this->rootFolder->getUserFolder($this->userId);
+
+ $files = [];
+ for ($i = 0; $i < 11; $i++) {
+ $file = $userFolder->newFile($i.'.txt');
+ $file->putContent('hello world!');
+ $this->previewManager->getPreview($file);
+ $files[] = $file;
+ }
+
+ return $files;
+ }
+
+ public function testCleanupSystemCron() {
+ $files = $this->setup11Previews();
+
+ $preview = $this->appDataFactory->get('preview');
+
+ $previews = $preview->getDirectoryListing();
+ $this->assertCount(11, $previews);
+
+ $job = new BackgroundCleanupJob($this->connection, $this->appDataFactory, true);
+ $job->run([]);
+
+ foreach ($files as $file) {
+ $file->delete();
+ }
+
+ $this->assertCount(11, $previews);
+ $job->run([]);
+
+ $previews = $preview->getDirectoryListing();
+ $this->assertCount(0, $previews);
+ }
+
+ public function testCleanupAjax() {
+ $files = $this->setup11Previews();
+
+ $preview = $this->appDataFactory->get('preview');
+
+ $previews = $preview->getDirectoryListing();
+ $this->assertCount(11, $previews);
+
+ $job = new BackgroundCleanupJob($this->connection, $this->appDataFactory, false);
+ $job->run([]);
+
+ foreach ($files as $file) {
+ $file->delete();
+ }
+
+ $this->assertCount(11, $previews);
+ $job->run([]);
+
+ $previews = $preview->getDirectoryListing();
+ $this->assertCount(1, $previews);
+
+ $job->run([]);
+
+ $previews = $preview->getDirectoryListing();
+ $this->assertCount(0, $previews);
+ }
+}