From 88a0ef7d4a49403c0b803cd8716ae95688490b59 Mon Sep 17 00:00:00 2001 From: Julius Haertl Date: Thu, 9 Feb 2017 12:08:42 +0100 Subject: Add tests for theming migration step Signed-off-by: Julius Haertl --- apps/theming/tests/Migration/ThemingImages.php | 137 +++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 apps/theming/tests/Migration/ThemingImages.php (limited to 'apps/theming/tests') diff --git a/apps/theming/tests/Migration/ThemingImages.php b/apps/theming/tests/Migration/ThemingImages.php new file mode 100644 index 00000000000..60cb6117755 --- /dev/null +++ b/apps/theming/tests/Migration/ThemingImages.php @@ -0,0 +1,137 @@ + + * + * @author Julius Härtl + * + * @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 . + * + */ + +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); + } +} -- cgit v1.2.3