From 4fbf9a4feb15a7001886d86285eb4da42b13927b Mon Sep 17 00:00:00 2001 From: Julius Haertl Date: Sun, 5 Mar 2017 23:28:59 +0100 Subject: [PATCH] Add tests for SCSSCacher MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/private/Template/SCSSCacher.php | 13 ++-- lib/private/TemplateLayout.php | 2 +- tests/lib/Template/SCSSCacherTest.php | 108 ++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 tests/lib/Template/SCSSCacherTest.php diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index c02d2c6727..3aa649da65 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -29,6 +29,7 @@ use OC\SystemConfig; use OCP\Files\IAppData; use OCP\Files\NotFoundException; use OCP\Files\SimpleFS\ISimpleFolder; +use OCP\IConfig; use OCP\ILogger; use OCP\IURLGenerator; @@ -43,8 +44,8 @@ class SCSSCacher { /** @var IURLGenerator */ protected $urlGenerator; - /** @var SystemConfig */ - protected $systemConfig; + /** @var IConfig */ + protected $config; /** @var string */ protected $serverRoot; @@ -59,12 +60,12 @@ class SCSSCacher { public function __construct(ILogger $logger, IAppData $appData, IURLGenerator $urlGenerator, - SystemConfig $systemConfig, + IConfig $config, $serverRoot) { $this->logger = $logger; $this->appData = $appData; $this->urlGenerator = $urlGenerator; - $this->systemConfig = $systemConfig; + $this->config = $config; $this->serverRoot = $serverRoot; } @@ -162,7 +163,7 @@ class SCSSCacher { $path, \OC::$SERVERROOT . '/core/css/', ]); - if($this->systemConfig->getValue('debug')) { + if($this->config->getSystemValue('debug')) { // Debug mode $scss->setFormatter(Expanded::class); $scss->setLineNumberStyle(Compiler::LINE_COMMENTS); @@ -213,7 +214,7 @@ class SCSSCacher { private function rebaseUrls($css, $webDir) { $re = '/url\([\'"]([\.\w?=\/-]*)[\'"]\)/x'; // OC\Route\Router:75 - if(($this->systemConfig->getValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true')) { + if(($this->config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true')) { $subst = 'url(\'../../'.$webDir.'/$1\')'; } else { $subst = 'url(\'../../../'.$webDir.'/$1\')'; diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 6d2c3b2674..a9bfaf9a7c 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -218,7 +218,7 @@ class TemplateLayout extends \OC_Template { \OC::$server->getLogger(), \OC::$server->getAppDataDir('css'), \OC::$server->getURLGenerator(), - \OC::$server->getSystemConfig(), + \OC::$server->getConfig(), \OC::$SERVERROOT ); } else { diff --git a/tests/lib/Template/SCSSCacherTest.php b/tests/lib/Template/SCSSCacherTest.php new file mode 100644 index 0000000000..52c1cad530 --- /dev/null +++ b/tests/lib/Template/SCSSCacherTest.php @@ -0,0 +1,108 @@ + + * + * @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 Test\Template; + +use OC\Template\SCSSCacher; +use OCP\Files\IAppData; +use OCP\Files\NotFoundException; +use OCP\Files\SimpleFS\ISimpleFile; +use OCP\Files\SimpleFS\ISimpleFolder; +use OCP\IConfig; +use OCP\ILogger; +use OCP\IURLGenerator; + +class SCSSCacherTest extends \Test\TestCase { + /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ + protected $logger; + /** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */ + protected $appData; + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + protected $urlGenerator; + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ + protected $config; + /** @var \OC_Defaults|\PHPUnit_Framework_MockObject_MockObject */ + protected $defaults; + /** @var SCSSCacher */ + protected $scssCacher; + + protected function setUp() { + parent::setUp(); + $this->logger = $this->createMock(ILogger::class); + $this->appData = $this->createMock(IAppData::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->config = $this->createMock(IConfig::class); + $this->defaults = $this->createMock(\OC_Defaults::class); + $this->scssCacher = new SCSSCacher( + $this->logger, + $this->appData, + $this->urlGenerator, + $this->config, + $this->defaults + ); + } + + public function testProcess() { + + } + + public function testVariablesChangedNotFound() { + $mtime = filemtime(\OC::$SERVERROOT . '/core/css/variables.scss'); + $file = $this->createMock(ISimpleFile::class); + $folder = $this->createMock(ISimpleFolder::class); + $folder->expects($this->once()) + ->method('getFile') + ->with('styles.scss') + ->willThrowException(new NotFoundException()); + $this->assertTrue($this->invokePrivate($this->scssCacher, 'variablesChanged', ['styles.scss', $folder])); + } + + public function testVariablesChangedOlder() { + $mtime = filemtime(\OC::$SERVERROOT . '/core/css/variables.scss'); + $file = $this->createMock(ISimpleFile::class); + $folder = $this->createMock(ISimpleFolder::class); + $folder->expects($this->once()) + ->method('getFile') + ->with('styles.scss') + ->willReturn($file); + $file->expects($this->once()) + ->method('getMTime') + ->willReturn($mtime-100); + $this->assertTrue($this->invokePrivate($this->scssCacher, 'variablesChanged', ['styles.scss', $folder])); + } + + public function testVariablesChangedNewer() { + $mtime = filemtime(\OC::$SERVERROOT . '/core/css/variables.scss'); + $file = $this->createMock(ISimpleFile::class); + $folder = $this->createMock(ISimpleFolder::class); + $folder->expects($this->once()) + ->method('getFile') + ->with('styles.scss') + ->willReturn($file); + $file->expects($this->once()) + ->method('getMTime') + ->willReturn($mtime+100); + $this->assertFalse($this->invokePrivate($this->scssCacher, 'variablesChanged', ['styles.scss', $folder])); + } + +} \ No newline at end of file