summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-01-12 14:01:04 +0100
committerVincent Petry <pvince81@owncloud.com>2015-01-12 18:14:17 +0100
commitdac7828480207f8297e63d1f2834e118a869bf81 (patch)
tree5a8c13318b64df09ecf91caf815ab0e93b1e18dd /apps
parent331d73c3a37e74f1e322b9bfb239940275422a65 (diff)
downloadnextcloud-server-dac7828480207f8297e63d1f2834e118a869bf81.tar.gz
nextcloud-server-dac7828480207f8297e63d1f2834e118a869bf81.zip
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
Diffstat (limited to 'apps')
-rw-r--r--apps/files/lib/app.php5
-rw-r--r--apps/files/tests/ajax_rename.php69
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,12 +117,81 @@ 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
*/
function testRenameInNonExistingFolder() {