From 19390a4b5eade5d140146e26471d22a476e9847d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Julius=20H=C3=A4rtl?= Date: Thu, 24 Sep 2020 08:20:03 +0200 Subject: [PATCH] Fix tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- .../Controller/ThemingControllerTest.php | 109 +++++------------- apps/theming/tests/ImageManagerTest.php | 72 ++++++++++-- 2 files changed, 91 insertions(+), 90 deletions(-) diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index 6fc5cf28fbf..5c6763cdd17 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -47,34 +47,32 @@ use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\IAppData; use OCP\Files\NotFoundException; use OCP\Files\SimpleFS\ISimpleFile; -use OCP\Files\SimpleFS\ISimpleFolder; use OCP\IConfig; use OCP\IL10N; use OCP\IRequest; use OCP\ITempManager; use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class ThemingControllerTest extends TestCase { - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IRequest|MockObject */ private $request; - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IConfig|MockObject */ private $config; - /** @var ThemingDefaults|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ThemingDefaults|MockObject */ private $themingDefaults; - /** @var \OCP\AppFramework\Utility\ITimeFactory */ - private $timeFactory; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IL10N|MockObject */ private $l10n; /** @var ThemingController */ private $themingController; /** @var ITempManager */ private $tempManager; - /** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IAppManager|MockObject */ private $appManager; - /** @var IAppData|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IAppData|MockObject */ private $appData; - /** @var ImageManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ImageManager|MockObject */ private $imageManager; /** @var SCSSCacher */ private $scssCacher; @@ -93,12 +91,12 @@ class ThemingControllerTest extends TestCase { $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->imageManager = $this->createMock(ImageManager::class); - $this->timeFactory = $this->createMock(ITimeFactory::class); - $this->timeFactory->expects($this->any()) + $timeFactory = $this->createMock(ITimeFactory::class); + $timeFactory->expects($this->any()) ->method('getTime') ->willReturn(123); - $this->overwriteService(ITimeFactory::class, $this->timeFactory); + $this->overwriteService(ITimeFactory::class, $timeFactory); $this->themingController = new ThemingController( 'theming', @@ -287,12 +285,9 @@ class ThemingControllerTest extends TestCase { return $str; }); - $folder = $this->createMock(ISimpleFolder::class); - $this->appData - ->expects($this->once()) - ->method('getFolder') - ->with('images') - ->willReturn($folder); + $this->imageManager->expects($this->once()) + ->method('updateImage') + ->willThrowException(new \Exception('Unsupported image type')); $expected = new DataResponse( [ @@ -331,12 +326,9 @@ class ThemingControllerTest extends TestCase { return $str; }); - $folder = $this->createMock(ISimpleFolder::class); - $this->appData - ->expects($this->once()) - ->method('getFolder') - ->with('images') - ->willReturn($folder); + $this->imageManager->expects($this->once()) + ->method('updateImage') + ->willThrowException(new \Exception('Unsupported image type')); $expected = new DataResponse( [ @@ -392,31 +384,6 @@ class ThemingControllerTest extends TestCase { return $str; }); - - $file = $this->createMock(ISimpleFile::class); - $folder = $this->createMock(ISimpleFolder::class); - if ($folderExists) { - $this->appData - ->expects($this->once()) - ->method('getFolder') - ->with('images') - ->willReturn($folder); - } else { - $this->appData - ->expects($this->at(0)) - ->method('getFolder') - ->with('images') - ->willThrowException(new NotFoundException()); - $this->appData - ->expects($this->at(1)) - ->method('newFolder') - ->with('images') - ->willReturn($folder); - } - $folder->expects($this->once()) - ->method('newFile') - ->with('logo') - ->willReturn($file); $this->urlGenerator->expects($this->once()) ->method('linkTo') ->willReturn('serverCss'); @@ -424,6 +391,10 @@ class ThemingControllerTest extends TestCase { ->method('getImageUrl') ->with('logo') ->willReturn('imageUrl'); + + $this->imageManager->expects($this->once()) + ->method('updateImage'); + $expected = new DataResponse( [ 'data' => @@ -468,30 +439,8 @@ class ThemingControllerTest extends TestCase { return $str; }); - $file = $this->createMock(ISimpleFile::class); - $folder = $this->createMock(ISimpleFolder::class); - if ($folderExists) { - $this->appData - ->expects($this->once()) - ->method('getFolder') - ->with('images') - ->willReturn($folder); - } else { - $this->appData - ->expects($this->at(0)) - ->method('getFolder') - ->with('images') - ->willThrowException(new NotFoundException()); - $this->appData - ->expects($this->at(1)) - ->method('newFolder') - ->with('images') - ->willReturn($folder); - } - $folder->expects($this->once()) - ->method('newFile') - ->with('background') - ->willReturn($file); + $this->imageManager->expects($this->once()) + ->method('updateImage'); $this->urlGenerator->expects($this->once()) ->method('linkTo') @@ -542,12 +491,9 @@ class ThemingControllerTest extends TestCase { return $str; }); - $folder = $this->createMock(ISimpleFolder::class); - $this->appData - ->expects($this->once()) - ->method('getFolder') - ->with('images') - ->willReturn($folder); + $this->imageManager->expects($this->once()) + ->method('updateImage') + ->willThrowException(new \Exception('Unsupported image type')); $expected = new DataResponse( [ @@ -717,9 +663,6 @@ class ThemingControllerTest extends TestCase { ->method('linkTo') ->with('', '/core/css/someHash-css-variables.scss') ->willReturn('/nextcloudWebroot/core/css/someHash-css-variables.scss'); - $this->imageManager->expects($this->once()) - ->method('delete') - ->with($filename); $expected = new DataResponse( [ diff --git a/apps/theming/tests/ImageManagerTest.php b/apps/theming/tests/ImageManagerTest.php index 82b4956c212..81f4a8b98db 100644 --- a/apps/theming/tests/ImageManagerTest.php +++ b/apps/theming/tests/ImageManagerTest.php @@ -36,23 +36,27 @@ use OCP\Files\SimpleFS\ISimpleFolder; use OCP\ICacheFactory; use OCP\IConfig; use OCP\ILogger; +use OCP\ITempManager; use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class ImageManagerTest extends TestCase { - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IConfig|MockObject */ protected $config; - /** @var IAppData|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IAppData|MockObject */ protected $appData; /** @var ImageManager */ protected $imageManager; - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IURLGenerator|MockObject */ private $urlGenerator; - /** @var ICacheFactory|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ICacheFactory|MockObject */ private $cacheFactory; - /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ILogger|MockObject */ private $logger; + /** @var ITempManager|MockObject */ + private $tempManager; protected function setUp(): void { parent::setUp(); @@ -61,12 +65,14 @@ class ImageManagerTest extends TestCase { $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->logger = $this->createMock(ILogger::class); + $this->tempManager = $this->createMock(ITempManager::class); $this->imageManager = new ImageManager( $this->config, $this->appData, $this->urlGenerator, $this->cacheFactory, - $this->logger + $this->logger, + $this->tempManager ); } @@ -84,7 +90,7 @@ class ImageManagerTest extends TestCase { } public function mockGetImage($key, $file) { - /** @var \PHPUnit\Framework\MockObject\MockObject $folder */ + /** @var MockObject $folder */ $folder = $this->createMock(ISimpleFolder::class); if ($file === null) { $folder->expects($this->once()) @@ -327,4 +333,56 @@ class ImageManagerTest extends TestCase { ->willReturn($folders[2]); $this->imageManager->cleanup(); } + + + public function dataUpdateImage() { + return [ + ['background', __DIR__ . '/../../../tests/data/testimage.png', true, true], + ['background', __DIR__ . '/../../../tests/data/testimage.png', false, true], + ['background', __DIR__ . '/../../../tests/data/testimage.jpg', true, true], + ['logo', __DIR__ . '/../../../tests/data/testimagelarge.svg', true, false], + ]; + } + + /** + * @dataProvider dataUpdateImage + */ + public function testUpdateImage($key, $tmpFile, $folderExists, $shouldConvert) { + $file = $this->createMock(ISimpleFile::class); + $folder = $this->createMock(ISimpleFolder::class); + $oldFile = $this->createMock(ISimpleFile::class); + $folder->expects($this->any()) + ->method('getFile') + ->willReturn($oldFile); + if ($folderExists) { + $this->appData + ->expects($this->any()) + ->method('getFolder') + ->with('images') + ->willReturn($folder); + } else { + $this->appData + ->expects($this->any()) + ->method('getFolder') + ->with('images') + ->willThrowException(new NotFoundException()); + $this->appData + ->expects($this->any()) + ->method('newFolder') + ->with('images') + ->willReturn($folder); + } + $folder->expects($this->once()) + ->method('newFile') + ->with($key) + ->willReturn($file); + + if ($shouldConvert) { + $this->tempManager->expects($this->once()) + ->method('getTemporaryFile') + ->willReturn('/tmp/randomtempfile-theming'); + } + + $this->imageManager->updateImage($key, $tmpFile); + } } -- 2.39.5