From dac7828480207f8297e63d1f2834e118a869bf81 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 12 Jan 2015 14:01:04 +0100 Subject: [PATCH] Return tags after rename To make it possible for the web UI to correctly display the tag/favorite information after a rename, this information is now returned in the rename response --- apps/files/lib/app.php | 5 ++- apps/files/tests/ajax_rename.php | 69 ++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/apps/files/lib/app.php b/apps/files/lib/app.php index c21e44bff4e..e1aeb4d4223 100644 --- a/apps/files/lib/app.php +++ b/apps/files/lib/app.php @@ -104,9 +104,10 @@ class App { ) { // successful rename $meta = $this->view->getFileInfo($normalizedNewPath); - $fileinfo = \OCA\Files\Helper::formatFileInfo($meta); + $meta = \OCA\Files\Helper::populateTags(array($meta)); + $fileInfo = \OCA\Files\Helper::formatFileInfo(current($meta)); $result['success'] = true; - $result['data'] = $fileinfo; + $result['data'] = $fileInfo; } else { // rename failed $result['data'] = array( diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php index 1cfecf9e58c..2ffba19e54b 100644 --- a/apps/files/tests/ajax_rename.php +++ b/apps/files/tests/ajax_rename.php @@ -117,11 +117,80 @@ class Test_OC_Files_App_Rename extends \Test\TestCase { $this->assertEquals(18, $result['data']['size']); $this->assertEquals('httpd/unix-directory', $result['data']['mimetype']); $this->assertEquals('abcdef', $result['data']['etag']); + $this->assertFalse(isset($result['data']['tags'])); $icon = \OC_Helper::mimetypeIcon('dir'); $icon = substr($icon, 0, -3) . 'svg'; $this->assertEquals($icon, $result['data']['icon']); } + /** + * test rename of file with tag + */ + function testRenameFileWithTag() { + $taggerMock = $this->getMock('\OCP\ITags'); + $taggerMock->expects($this->any()) + ->method('getTagsForObjects') + ->with(array(123)) + ->will($this->returnValue(array(123 => array('tag1', 'tag2')))); + $tagManagerMock = $this->getMock('\OCP\ITagManager'); + $tagManagerMock->expects($this->any()) + ->method('load') + ->with('files') + ->will($this->returnValue($taggerMock)); + $oldTagManager = \OC::$server->query('TagManager'); + \OC::$server->registerService('TagManager', function ($c) use ($tagManagerMock) { + return $tagManagerMock; + }); + + $dir = '/'; + $oldname = 'oldname.txt'; + $newname = 'newname.txt'; + + $this->viewMock->expects($this->any()) + ->method('file_exists') + ->with($this->anything()) + ->will($this->returnValueMap(array( + array('/', true), + array('/oldname.txt', true) + ))); + + + $this->viewMock->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(new \OC\Files\FileInfo( + '/new_name.txt', + new \OC\Files\Storage\Local(array('datadir' => '/')), + '/', + array( + 'fileid' => 123, + 'type' => 'file', + 'mimetype' => 'text/plain', + 'mtime' => 0, + 'permissions' => 31, + 'size' => 18, + 'etag' => 'abcdef', + 'directory' => '/', + 'name' => 'new_name.txt', + ), null))); + + $result = $this->files->rename($dir, $oldname, $newname); + + $this->assertTrue($result['success']); + $this->assertEquals(123, $result['data']['id']); + $this->assertEquals('new_name.txt', $result['data']['name']); + $this->assertEquals(18, $result['data']['size']); + $this->assertEquals('text/plain', $result['data']['mimetype']); + $this->assertEquals('abcdef', $result['data']['etag']); + $this->assertEquals(array('tag1', 'tag2'), $result['data']['tags']); + $icon = \OC_Helper::mimetypeIcon('text'); + $icon = substr($icon, 0, -3) . 'svg'; + $this->assertEquals($icon, $result['data']['icon']); + + \OC::$server->registerService('TagManager', function ($c) use ($oldTagManager) { + return $oldTagManager; + }); + } + /** * Test rename inside a folder that doesn't exist any more */ -- 2.39.5