diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index 63b3f28d33c58..dd71e8ec28e46 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -297,8 +297,9 @@ public static function move2trash($file_path, $ownerOnly = false) { try { $moveSuccessful = true; + $inCache = $sourceStorage->getCache()->inCache($sourceInternalPath); $trashStorage->moveFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); - if ($sourceStorage->getCache()->inCache($sourceInternalPath)) { + if ($inCache) { $trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); } } catch (CopyRecursiveException $e) { diff --git a/apps/files_trashbin/tests/TrashbinTest.php b/apps/files_trashbin/tests/TrashbinTest.php index 6104a24210472..8dcd276955867 100644 --- a/apps/files_trashbin/tests/TrashbinTest.php +++ b/apps/files_trashbin/tests/TrashbinTest.php @@ -656,6 +656,28 @@ public function testRestoreFileIntoReadOnlySourceFolder(): void { } } + public function testTrashSizePropagation(): void { + $view = new View('/' . self::TEST_TRASHBIN_USER1 . '/files_trashbin/files'); + + $userFolder = Server::get(IRootFolder::class)->getUserFolder(self::TEST_TRASHBIN_USER1); + $file1 = $userFolder->newFile('foo.txt'); + $file1->putContent('1'); + + $this->assertTrue($userFolder->nodeExists('foo.txt')); + $file1->delete(); + $this->assertFalse($userFolder->nodeExists('foo.txt')); + $this->assertEquals(1, $view->getFileInfo('')->getSize()); + + $folder = $userFolder->newFolder('bar'); + $file2 = $folder->newFile('baz.txt'); + $file2->putContent('22'); + + $this->assertTrue($userFolder->nodeExists('bar')); + $folder->delete(); + $this->assertFalse($userFolder->nodeExists('bar')); + $this->assertEquals(3, $view->getFileInfo('')->getSize()); + } + /** * @param string $user * @param bool $create