diff options
author | John Molakvoæ <skjnldsv@protonmail.com> | 2022-04-22 09:56:12 +0200 |
---|---|---|
committer | John Molakvoæ <skjnldsv@protonmail.com> | 2022-04-22 11:24:25 +0200 |
commit | 850d8ac1cd9e5b28e37668469237d8daa5c5d51d (patch) | |
tree | 995400b3fe2e8f8b07b250ade23ceb9817ac11ba /apps/theming/tests | |
parent | 05a33ad713f47b8cfe400447ec9c4c1f8be310bd (diff) | |
download | nextcloud-server-850d8ac1cd9e5b28e37668469237d8daa5c5d51d.tar.gz nextcloud-server-850d8ac1cd9e5b28e37668469237d8daa5c5d51d.zip |
Add default theming disabled fallback
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'apps/theming/tests')
-rw-r--r-- | apps/theming/tests/Service/ThemesServiceTest.php | 2 | ||||
-rw-r--r-- | apps/theming/tests/Themes/DefaultThemeTest.php | 146 |
2 files changed, 147 insertions, 1 deletions
diff --git a/apps/theming/tests/Service/ThemesServiceTest.php b/apps/theming/tests/Service/ThemesServiceTest.php index 64f461c88a7..2d0d313f9e4 100644 --- a/apps/theming/tests/Service/ThemesServiceTest.php +++ b/apps/theming/tests/Service/ThemesServiceTest.php @@ -55,7 +55,7 @@ use OCP\IUserSession; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; -class UserThemeControllerTest extends TestCase { +class ThemesServiceTest extends TestCase { /** @var ThemesService */ private $themesService; diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php new file mode 100644 index 00000000000..d3494b1c304 --- /dev/null +++ b/apps/theming/tests/Themes/DefaultThemeTest.php @@ -0,0 +1,146 @@ +<?php +/** + * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> + * + * @author Bjoern Schiessle <bjoern@schiessle.org> + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @author Daniel Calviño Sánchez <danxuliu@gmail.com> + * @author Joas Schilling <coding@schilljs.com> + * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Julius Haertl <jus@bitgrid.net> + * @author Julius Härtl <jus@bitgrid.net> + * @author Kyle Fazzari <kyrofa@ubuntu.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Michael Weimann <mail@michael-weimann.eu> + * @author rakekniven <mark.ziegler@rakekniven.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @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 OCA\Theming\ImageManager; +use OCA\Theming\ITheme; +use OCA\Theming\Themes\DefaultTheme; +use OCA\Theming\ThemingDefaults; +use OCA\Theming\Util; +use OCP\Files\IAppData; +use OCP\IConfig; +use OCP\IL10N; +use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + + +class DefaultThemeTest 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 DefaultTheme $defaultTheme; + + protected function setUp(): void { + $this->themingDefaults = $this->createMock(ThemingDefaults::class); + $this->urlGenerator = $this->createMock(IURLGenerator::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) + ); + + $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->defaultTheme = new DefaultTheme( + $util, + $this->themingDefaults, + $this->urlGenerator, + $this->imageManager, + $this->config, + $this->l10n, + ); + + parent::setUp(); + } + + + public function testGetId() { + $this->assertEquals('default', $this->defaultTheme->getId()); + } + + public function testGetType() { + $this->assertEquals(ITheme::TYPE_THEME, $this->defaultTheme->getType()); + } + + public function testGetTitle() { + $this->assertEquals('Light theme', $this->defaultTheme->getTitle()); + } + + public function testGetEnableLabel() { + $this->assertEquals('Enable the default light theme', $this->defaultTheme->getEnableLabel()); + } + + public function testGetDescription() { + $this->assertEquals('The default light appearance.', $this->defaultTheme->getDescription()); + } + + public function testGetMediaQuery() { + $this->assertEquals('', $this->defaultTheme->getMediaQuery()); + } + + public function testGetCustomCss() { + $this->assertEquals('', $this->defaultTheme->getCustomCss()); + } + + /** + * Ensure parity between the default theme and the static generated file + * @see ThemingController.php:313 + */ + public function testThemindDisabledFallbackCss() { + // Generate variables + $variables = ''; + foreach ($this->defaultTheme->getCSSVariables() as $variable => $value) { + $variables .= " $variable: $value;" . PHP_EOL; + }; + + $css = ":root { " . PHP_EOL . "$variables}" . PHP_EOL; + $fallbackCss = file_get_contents(__DIR__ . '/../../css/default.css'); + + $this->assertEquals($css, $fallbackCss); + } +} |