]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add tests for theming migration step
authorJulius Haertl <jus@bitgrid.net>
Thu, 9 Feb 2017 11:08:42 +0000 (12:08 +0100)
committerJulius Haertl <jus@bitgrid.net>
Thu, 16 Feb 2017 14:13:38 +0000 (15:13 +0100)
Signed-off-by: Julius Haertl <jus@bitgrid.net>
apps/theming/lib/Migration/ThemingImages.php
apps/theming/tests/Migration/ThemingImages.php [new file with mode: 0644]

index 9627697f666c5afca4a348d5cc94d3a93f01f207..f6f484be8b5a3ec3e11e25cbdf6beb0857cd8f7e 100644 (file)
@@ -37,7 +37,7 @@ class ThemingImages implements IRepairStep {
        private $appData;
        private $rootFolder;
 
-       public function __construct(IAppData $appData, ThemingDefaults $defaults, IRootFolder $rootFolder) {
+       public function __construct(IAppData $appData, IRootFolder $rootFolder) {
                $this->appData = $appData;
                $this->rootFolder = $rootFolder;
        }
@@ -58,21 +58,20 @@ class ThemingImages implements IRepairStep {
                $file = null;
                try {
                        $file = $this->rootFolder->get('themedinstancelogo');
-                       $logo = $folder->newFile("logo");
+                       $logo = $folder->newFile('logo');
                        $logo->putContent($file->getContent());
                        $file->delete();
                } catch (NotFoundException $e) {
-                       $output->info("No theming logo image to migrate");
+                       $output->info('No theming logo image to migrate');
                }
 
                try {
                        $file = $this->rootFolder->get('themedbackgroundlogo');
-                       $background = $folder->newFile("background");
+                       $background = $folder->newFile('background');
                        $background->putContent($file->getContent());
                        $file->delete();
                } catch (NotFoundException $e) {
-                       $output->info("No theming background image to migrate");
+                       $output->info('No theming background image to migrate');
                }
-
        }
-}
\ No newline at end of file
+}
diff --git a/apps/theming/tests/Migration/ThemingImages.php b/apps/theming/tests/Migration/ThemingImages.php
new file mode 100644 (file)
index 0000000..60cb611
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU Affero General Public License as
+ *  published by the Free Software Foundation, either version 3 of the
+ *  License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Affero General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Affero General Public License
+ *  along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Theming\Tests\Migration;
+
+use OCP\Files\NotFoundException;
+use OCP\Files\SimpleFS\ISimpleFolder;
+use OCP\Migration\IOutput;
+use Test\TestCase;
+use OCA\Theming\Migration\ThemingImages;
+use OCP\Files\IAppData;
+use OCP\Files\IRootFolder;
+
+class ThemingImagesTest extends TestCase {
+       /** @var ThemingImages */
+       private $repairStep;
+       /** @var IAppData */
+       private $appData;
+       /** @var IRootFolder */
+       private $rootFolder;
+       /** @var ISimpleFolder */
+       private $imageFolder;
+       /** @var IOutput */
+       private $output;
+
+       public function setUp() {
+               parent::setUp();
+               $this->appData = $this->getMockBuilder('OCP\Files\IAppData')->getMock();
+               $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock();
+               $this->repairStep = new ThemingImages($this->appData, $this->rootFolder);
+               $this->imageFolder = $this->getMockBuilder('OCP\Files\SimpleFS\ISimpleFolder')->getMock();
+               $this->output = $this->getMockBuilder('OCP\Migration\IOutput')->getMock();
+       }
+
+       public function testGetName() {
+               $this->assertEquals(
+                       'Move theming files to AppData storage',
+                       $this->repairStep->getName()
+               );
+       }
+
+       public function testRunNoImages() {
+               $this->appData->expects($this->once())
+                       ->method('newFolder')
+                       ->willReturn($this->imageFolder);
+               $this->rootFolder->expects($this->any())
+                       ->method('get')
+                       ->willThrowException(new NotFoundException());
+               $this->imageFolder->expects($this->never())
+                       ->method('newFile');
+               $this->output->expects($this->exactly(2))
+                       ->method('info');
+               $this->repairStep->run($this->output);
+       }
+
+       public function testRunLogo() {
+               $oldFile = $this->getMockBuilder('OCP\Files\File')->getMock();
+               $newFile = $this->getMockBuilder('OCP\Files\SimpleFS\ISimpleFile')->getMock();
+
+               $this->appData->expects($this->once())
+                       ->method('newFolder')
+                       ->willReturn($this->imageFolder);
+               $this->rootFolder->expects($this->at(1))
+                       ->method('get')
+                       ->with('themedbackgroundlogo')
+                       ->willThrowException(new NotFoundException());
+               $this->rootFolder->expects($this->at(0))
+                       ->method('get')
+                       ->with('themedinstancelogo')
+                       ->willReturn($oldFile);
+               $this->imageFolder->expects($this->once())
+                       ->method('newFile')
+                       ->with('logo')
+                       ->willReturn($newFile);
+               $oldFile->expects($this->once())
+                       ->method('getContent')
+                       ->willReturn('data');
+               $newFile->expects($this->once())
+                       ->method('putContent')
+                       ->with('data');
+               $oldFile->expects($this->once())
+                       ->method('delete');
+
+               $this->repairStep->run($this->output);
+       }
+
+       public function testRunBackground() {
+               $oldFile = $this->getMockBuilder('OCP\Files\File')->getMock();
+               $newFile = $this->getMockBuilder('OCP\Files\SimpleFS\ISimpleFile')->getMock();
+
+               $this->appData->expects($this->once())
+                       ->method('newFolder')
+                       ->willReturn($this->imageFolder);
+               $this->rootFolder->expects($this->at(1))
+                       ->method('get')
+                       ->with('themedbackgroundlogo')
+                       ->willReturn($oldFile);
+               $this->rootFolder->expects($this->at(0))
+                       ->method('get')
+                       ->with('themedinstancelogo')
+                       ->willThrowException(new NotFoundException());
+               $this->imageFolder->expects($this->once())
+                       ->method('newFile')
+                       ->with('background')
+                       ->willReturn($newFile);
+               $oldFile->expects($this->once())
+                       ->method('getContent')
+                       ->willReturn('data');
+               $newFile->expects($this->once())
+                       ->method('putContent')
+                       ->with('data');
+               $oldFile->expects($this->once())
+                       ->method('delete');
+
+               $this->repairStep->run($this->output);
+       }
+}