Merge pull request #15153 from owncloud/uniquename-node
Add `getNonExistingName()` to the node api
This commit is contained in:
commit
5a9c9b86f8
|
@ -389,4 +389,16 @@ class Folder extends Node implements \OCP\Files\Folder {
|
||||||
throw new NotPermittedException();
|
throw new NotPermittedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a suffix to the name in case the file exists
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @return string
|
||||||
|
* @throws NotPermittedException
|
||||||
|
*/
|
||||||
|
public function getNonExistingName($name) {
|
||||||
|
$uniqueName = \OC_Helper::buildNotExistingFileNameForView($this->getPath(), $name, $this->view);
|
||||||
|
return trim($this->getRelativePath($uniqueName), '/');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,4 +146,13 @@ interface Folder extends Node {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isCreatable();
|
public function isCreatable();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a suffix to the name in case the file exists
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @return string
|
||||||
|
* @throws NotPermittedException
|
||||||
|
*/
|
||||||
|
public function getNonExistingName($name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -679,4 +679,40 @@ class Folder extends \Test\TestCase {
|
||||||
$this->assertEquals('/bar/foo/qwerty', $result[0]->getPath());
|
$this->assertEquals('/bar/foo/qwerty', $result[0]->getPath());
|
||||||
$this->assertEquals('/bar/foo/asd/foo/qwerty', $result[1]->getPath());
|
$this->assertEquals('/bar/foo/asd/foo/qwerty', $result[1]->getPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function uniqueNameProvider() {
|
||||||
|
return [
|
||||||
|
// input, existing, expected
|
||||||
|
['foo', [] , 'foo'],
|
||||||
|
['foo', ['foo'] , 'foo (2)'],
|
||||||
|
['foo', ['foo', 'foo (2)'] , 'foo (3)']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider uniqueNameProvider
|
||||||
|
*/
|
||||||
|
public function testGetUniqueName($name, $existingFiles, $expected) {
|
||||||
|
$manager = $this->getMock('\OC\Files\Mount\Manager');
|
||||||
|
$folderPath = '/bar/foo';
|
||||||
|
/**
|
||||||
|
* @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view
|
||||||
|
*/
|
||||||
|
$view = $this->getMock('\OC\Files\View');
|
||||||
|
$root = $this->getMock('\OC\Files\Node\Root', array('getUser', 'getMountsIn', 'getMount'), array($manager, $view, $this->user));
|
||||||
|
|
||||||
|
$view->expects($this->any())
|
||||||
|
->method('file_exists')
|
||||||
|
->will($this->returnCallback(function ($path) use ($existingFiles, $folderPath) {
|
||||||
|
foreach ($existingFiles as $existing) {
|
||||||
|
if ($folderPath . '/' . $existing === $path){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
$node = new \OC\Files\Node\Folder($root, $view, $folderPath);
|
||||||
|
$this->assertEquals($expected, $node->getNonExistingName($name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue