Browse Source
Fix dyslexia font loading
Fix dyslexia font loading
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>pull/32073/head
No known key found for this signature in database
GPG Key ID: 60C25B8C072916CF
5 changed files with 178 additions and 42 deletions
-
19apps/theming/lib/Themes/DyslexiaFont.php
-
13apps/theming/tests/Controller/UserThemeControllerTest.php
-
13apps/theming/tests/Service/ThemesServiceTest.php
-
13apps/theming/tests/Themes/DefaultThemeTest.php
-
162apps/theming/tests/Themes/DyslexiaFontTest.php
@ -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()); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue