parent
9a76f06eca
commit
f7f4d36a37
@ -0,0 +1,162 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> |
||||
* |
||||
* @author John Molakvoæ <skjnldsv@protonmail.com> |
||||
* |
||||
* @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\Service; |
||||
|
||||
use OC\App\AppManager; |
||||
use OC\Route\Router; |
||||
use OCA\Theming\ImageManager; |
||||
use OCA\Theming\ITheme; |
||||
use OCA\Theming\Themes\DyslexiaFont; |
||||
use OCA\Theming\ThemingDefaults; |
||||
use OCA\Theming\Util; |
||||
use OCP\Files\IAppData; |
||||
use OCP\ICacheFactory; |
||||
use OCP\IConfig; |
||||
use OCP\IL10N; |
||||
use OCP\IRequest; |
||||
use OCP\IURLGenerator; |
||||
use OCP\IUserSession; |
||||
use PHPUnit\Framework\MockObject\MockObject; |
||||
use Test\TestCase; |
||||
|
||||
|
||||
class DyslexiaFontTest extends TestCase { |
||||
/** @var ThemingDefaults|MockObject */ |
||||
private $themingDefaults; |
||||
/** @var IURLGenerator|MockObject */ |
||||
private $urlGenerator; |
||||
/** @var ImageManager|MockObject */ |
||||
private $imageManager; |
||||
/** @var IConfig|MockObject */ |
||||
private $config; |
||||
/** @var IL10N|MockObject */ |
||||
private $l10n; |
||||
|
||||
private DyslexiaFont $dyslexiaFont; |
||||
|
||||
protected function setUp(): void { |
||||
$this->themingDefaults = $this->createMock(ThemingDefaults::class); |
||||
$this->imageManager = $this->createMock(ImageManager::class); |
||||
$this->config = $this->createMock(IConfig::class); |
||||
$this->l10n = $this->createMock(IL10N::class); |
||||
|
||||
$util = new Util( |
||||
$this->config, |
||||
$this->createMock(AppManager::class), |
||||
$this->createMock(IAppData::class) |
||||
); |
||||
|
||||
$userSession = $this->createMock(IUserSession::class); |
||||
$cacheFactory = $this->createMock(ICacheFactory::class); |
||||
$request = $this->createMock(IRequest::class); |
||||
$router = $this->createMock(Router::class); |
||||
$this->urlGenerator = new \OC\URLGenerator( |
||||
$this->config, |
||||
$userSession, |
||||
$cacheFactory, |
||||
$request, |
||||
$router |
||||
); |
||||
|
||||
$this->themingDefaults |
||||
->expects($this->any()) |
||||
->method('getColorPrimary') |
||||
->willReturn('#0082c9'); |
||||
|
||||
$this->l10n |
||||
->expects($this->any()) |
||||
->method('t') |
||||
->willReturnCallback(function ($text, $parameters = []) { |
||||
return vsprintf($text, $parameters); |
||||
}); |
||||
|
||||
$this->dyslexiaFont = new DyslexiaFont( |
||||
$util, |
||||
$this->themingDefaults, |
||||
$this->urlGenerator, |
||||
$this->imageManager, |
||||
$this->config, |
||||
$this->l10n, |
||||
); |
||||
|
||||
parent::setUp(); |
||||
} |
||||
|
||||
|
||||
public function testGetId() { |
||||
$this->assertEquals('opendyslexic', $this->dyslexiaFont->getId()); |
||||
} |
||||
|
||||
public function testGetType() { |
||||
$this->assertEquals(ITheme::TYPE_FONT, $this->dyslexiaFont->getType()); |
||||
} |
||||
|
||||
public function testGetTitle() { |
||||
$this->assertNotEmpty($this->dyslexiaFont->getTitle()); |
||||
} |
||||
|
||||
public function testGetEnableLabel() { |
||||
$this->assertNotEmpty($this->dyslexiaFont->getEnableLabel()); |
||||
} |
||||
|
||||
public function testGetDescription() { |
||||
$this->assertNotEmpty($this->dyslexiaFont->getDescription()); |
||||
} |
||||
|
||||
public function testGetMediaQuery() { |
||||
$this->assertEquals('', $this->dyslexiaFont->getMediaQuery()); |
||||
} |
||||
|
||||
public function testGetCSSVariables() { |
||||
$this->assertStringStartsWith('OpenDyslexic', $this->dyslexiaFont->getCSSVariables()['--font-face']); |
||||
} |
||||
|
||||
public function dataTestGetCustomCss() { |
||||
return [ |
||||
['', true], |
||||
['', false], |
||||
['/subfolder', true], |
||||
['/subfolder', false], |
||||
]; |
||||
} |
||||
|
||||
/** |
||||
* @dataProvider dataTestGetCustomCss |
||||
* |
||||
* Ensure the fonts are always loaded from the web root |
||||
* despite having url rewriting enabled or not |
||||
* |
||||
* @param string $webRoot |
||||
* @param bool $prettyUrlsEnabled |
||||
*/ |
||||
public function testGetCustomCss($webRoot, $prettyUrlsEnabled) { |
||||
\OC::$WEBROOT = $webRoot; |
||||
$this->config->expects($this->any()) |
||||
->method('getSystemValue') |
||||
->with('htaccess.IgnoreFrontController', false) |
||||
->willReturn($prettyUrlsEnabled); |
||||
|
||||
$this->assertStringContainsString("'$webRoot/apps/theming/fonts/OpenDyslexic-Regular.woff'", $this->dyslexiaFont->getCustomCss()); |
||||
$this->assertStringNotContainsString('index.php', $this->dyslexiaFont->getCustomCss()); |
||||
} |
||||
} |
Loading…
Reference in new issue