2023-12-21 19:18:55 -05:00
< ? 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\Themes ;
use OCA\Theming\AppInfo\Application ;
use OCA\Theming\ImageManager ;
use OCA\Theming\ITheme ;
use OCA\Theming\Service\BackgroundService ;
use OCA\Theming\Themes\HighContrastTheme ;
use OCA\Theming\ThemingDefaults ;
use OCA\Theming\Util ;
use OCP\App\IAppManager ;
use OCP\Files\IAppData ;
use OCP\IConfig ;
use OCP\IL10N ;
use OCP\IURLGenerator ;
use OCP\IUserSession ;
use PHPUnit\Framework\MockObject\MockObject ;
class HighContrastThemeTest extends AccessibleThemeTestCase {
/** @var ThemingDefaults|MockObject */
private $themingDefaults ;
/** @var IUserSession|MockObject */
private $userSession ;
/** @var IURLGenerator|MockObject */
private $urlGenerator ;
/** @var ImageManager|MockObject */
private $imageManager ;
/** @var IConfig|MockObject */
private $config ;
/** @var IL10N|MockObject */
private $l10n ;
/** @var IAppManager|MockObject */
private $appManager ;
// !! important: Enable WCAG AAA tests
protected bool $WCAGaaa = true ;
protected function setUp () : void {
$this -> themingDefaults = $this -> createMock ( ThemingDefaults :: class );
$this -> userSession = $this -> createMock ( IUserSession :: 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 );
$this -> appManager = $this -> createMock ( IAppManager :: class );
$this -> util = new Util (
$this -> config ,
$this -> appManager ,
$this -> createMock ( IAppData :: class ),
$this -> imageManager
);
$this -> themingDefaults
-> expects ( $this -> any ())
-> method ( 'getColorPrimary' )
-> willReturn ( '#0082c9' );
$this -> themingDefaults
-> expects ( $this -> any ())
-> method ( 'getDefaultColorPrimary' )
-> willReturn ( '#0082c9' );
2024-01-20 01:43:04 -05:00
$this -> themingDefaults
-> expects ( $this -> any ())
-> method ( 'getColorBackground' )
-> willReturn ( '#0082c9' );
$this -> themingDefaults
-> expects ( $this -> any ())
-> method ( 'getDefaultColorBackground' )
-> willReturn ( '#0082c9' );
2023-12-21 19:18:55 -05:00
$this -> themingDefaults
-> expects ( $this -> any ())
-> method ( 'getBackground' )
-> willReturn ( '/apps/' . Application :: APP_ID . '/img/background/' . BackgroundService :: DEFAULT_BACKGROUND_IMAGE );
$this -> l10n
-> expects ( $this -> any ())
-> method ( 't' )
-> willReturnCallback ( function ( $text , $parameters = []) {
return vsprintf ( $text , $parameters );
});
$this -> urlGenerator
-> expects ( $this -> any ())
-> method ( 'imagePath' )
-> willReturnCallback ( function ( $app = 'core' , $filename = '' ) {
return " / $app /img/ $filename " ;
});
$this -> theme = new HighContrastTheme (
$this -> util ,
$this -> themingDefaults ,
$this -> userSession ,
$this -> urlGenerator ,
$this -> imageManager ,
$this -> config ,
$this -> l10n ,
$this -> appManager ,
);
parent :: setUp ();
}
public function testGetId () {
$this -> assertEquals ( 'light-highcontrast' , $this -> theme -> getId ());
}
public function testGetType () {
$this -> assertEquals ( ITheme :: TYPE_THEME , $this -> theme -> getType ());
}
public function testGetTitle () {
$this -> assertEquals ( 'High contrast mode' , $this -> theme -> getTitle ());
}
public function testGetEnableLabel () {
$this -> assertEquals ( 'Enable high contrast mode' , $this -> theme -> getEnableLabel ());
}
public function testGetDescription () {
$this -> assertEquals ( 'A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased.' , $this -> theme -> getDescription ());
}
public function testGetMediaQuery () {
$this -> assertEquals ( '(prefers-contrast: more)' , $this -> theme -> getMediaQuery ());
}
}