]> source.dussan.org Git - nextcloud-server.git/commitdiff
Make buildNotExistingFileName testable and write unittests
authorBart Visscher <bartv@thisnet.nl>
Fri, 8 Mar 2013 13:22:04 +0000 (14:22 +0100)
committerBart Visscher <bartv@thisnet.nl>
Fri, 5 Jul 2013 11:03:01 +0000 (13:03 +0200)
lib/helper.php
tests/lib/helper.php

index 1860a55fc8fd7a3515341d5ad8ebbc534ed8bacf..017221cef77330d339adf5e53775e57c61b3ece8 100644 (file)
@@ -636,6 +636,18 @@ class OC_Helper {
        * @return string
        */
        public static function buildNotExistingFileName($path, $filename) {
+               $view = \OC\Files\Filesystem::getView();
+               return self::buildNotExistingFileNameForView($path, $filename, $view);
+       }
+
+       /**
+       * Adds a suffix to the name in case the file exists
+       *
+       * @param $path
+       * @param $filename
+       * @return string
+       */
+       public static function buildNotExistingFileNameForView($path, $filename, \OC\Files\View $view) {
                if($path==='/') {
                        $path='';
                }
@@ -649,7 +661,7 @@ class OC_Helper {
 
                $newpath = $path . '/' . $filename;
                $counter = 2;
-               while (\OC\Files\Filesystem::file_exists($newpath)) {
+               while ($view->file_exists($newpath)) {
                        $newname = $name . ' (' . $counter . ')' . $ext;
                        $newpath = $path . '/' . $newname;
                        $counter++;
index 6acb0dfaa6b1cf1a2eb8b2e7f5e1079e7a089d58..410117a9e67632eefbd502adc5ca6b7e22b02e67 100644 (file)
@@ -146,4 +146,46 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
                $result = OC_Helper::recursiveArraySearch($haystack, "NotFound");
                $this->assertFalse($result);
        }
+
+       function testBuildNotExistingFileNameForView() {
+               $viewMock = $this->getMock('\OC\Files\View', array(), array(), '', false);
+               $this->assertEquals('/filename', OC_Helper::buildNotExistingFileNameForView('/', 'filename', $viewMock));
+               $this->assertEquals('dir/filename.ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock));
+
+               $viewMock->expects($this->at(0))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $this->assertEquals('dir/filename (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock));
+
+               $viewMock->expects($this->at(0))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $viewMock->expects($this->at(1))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $this->assertEquals('dir/filename (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock));
+
+               $viewMock->expects($this->at(0))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $this->assertEquals('dir/filename (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (1).ext', $viewMock));
+
+               $viewMock->expects($this->at(0))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $viewMock->expects($this->at(1))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $this->assertEquals('dir/filename (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (2).ext', $viewMock));
+
+               $viewMock->expects($this->at(0))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $this->assertEquals('dir/filename(2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1).ext', $viewMock));
+
+               $viewMock->expects($this->at(0))
+                       ->method('file_exists')
+                       ->will($this->returnValue(true));
+               $this->assertEquals('dir/filename(1) (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1) (1).ext', $viewMock));
+       }
 }