summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2015-01-12 19:12:31 +0100
committerJoas Schilling <nickvergessen@gmx.de>2015-01-12 19:12:31 +0100
commitec70246be2cd2edb2bfb94e390eb18140b8522d5 (patch)
tree83874ba705e4cc1812303f451a9266da4fd5ab60
parentd36a2c8b04f276d3016ed3266acf5476c66ed166 (diff)
parent8cc13031e95852e6d2999d963ed7844a7a491540 (diff)
downloadnextcloud-server-ec70246be2cd2edb2bfb94e390eb18140b8522d5.tar.gz
nextcloud-server-ec70246be2cd2edb2bfb94e390eb18140b8522d5.zip
Merge pull request #13272 from owncloud/fav-renamekeepfav
Fixes issues when renaming favorite file
-rw-r--r--apps/files/lib/app.php6
-rw-r--r--apps/files/tests/ajax_rename.php71
2 files changed, 75 insertions, 2 deletions
diff --git a/apps/files/lib/app.php b/apps/files/lib/app.php
index c21e44bff4e..47d0ec9be9d 100644
--- a/apps/files/lib/app.php
+++ b/apps/files/lib/app.php
@@ -104,9 +104,11 @@ 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));
+ $fileInfo['path'] = dirname($normalizedNewPath);
$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..488c741d3f6 100644
--- a/apps/files/tests/ajax_rename.php
+++ b/apps/files/tests/ajax_rename.php
@@ -117,12 +117,83 @@ 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']));
+ $this->assertEquals('/', $result['data']['path']);
$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']);
+ $this->assertEquals('/', $result['data']['path']);
+ $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
*/
function testRenameInNonExistingFolder() {