mediawiki-skins-MinervaNeue/tests/phpunit/unit/SkinOptionsTest.php
Fomafix 229a610ae7 Use PHP type hints in PHPUnit tests
* Add PHP type hints to private functions.
* Remove @param and @return if redundant to type declaration.

Change-Id: I40df9579af92ad1af820d3706a8cd907e9950ce2
2024-10-21 19:20:00 +00:00

79 lines
2.1 KiB
PHP

<?php
namespace MediaWiki\Minerva;
use MediaWiki\HookContainer\HookContainer;
use MediaWiki\Minerva\Skins\SkinUserPageHelper;
use MediaWikiUnitTestCase;
use OutOfBoundsException;
/**
* @package Tests\MediaWiki\Minerva
* @group MinervaNeue
* @coversDefaultClass \MediaWiki\Minerva\SkinOptions
*/
class SkinOptionsTest extends MediaWikiUnitTestCase {
private function newSkinOptions(): SkinOptions {
return new SkinOptions(
$this->createMock( HookContainer::class ),
$this->createMock( SkinUserPageHelper::class )
);
}
/**
* @covers ::get
* @covers ::getAll
* @covers ::setMultiple
*/
public function testSettersAndGetters() {
$options = $this->newSkinOptions();
$defaultValue = $options->get( SkinOptions::BETA_MODE );
$options->setMultiple( [ SkinOptions::BETA_MODE => !$defaultValue ] );
$allOptions = $options->getAll();
$this->assertEquals( !$defaultValue, $options->get( SkinOptions::BETA_MODE ) );
$this->assertArrayHasKey( SkinOptions::BETA_MODE, $allOptions );
$this->assertEquals( !$defaultValue, $allOptions[ SkinOptions::BETA_MODE ] );
}
/**
* @covers ::hasSkinOptions
*/
public function testHasSkinOptions() {
$options = $this->newSkinOptions();
$this->assertTrue( $options->hasSkinOptions() );
$options->setMultiple( [
SkinOptions::SHOW_DONATE => false,
SkinOptions::TALK_AT_TOP => false,
SkinOptions::HISTORY_IN_PAGE_ACTIONS => false,
SkinOptions::TOOLBAR_SUBMENU => false,
SkinOptions::MAIN_MENU_EXPANDED => false,
SkinOptions::PERSONAL_MENU => false,
SkinOptions::TABS_ON_SPECIALS => false,
] );
$this->assertFalse( $options->hasSkinOptions() );
}
/**
* @covers ::get
*/
public function testGettingUnknownKeyShouldThrowException() {
$options = $this->newSkinOptions();
$this->expectException( OutOfBoundsException::class );
$options->get( 'non_existing_key' );
}
/**
* @covers ::get
*/
public function testSettingUnknownKeyShouldThrowException() {
$options = $this->newSkinOptions();
$this->expectException( OutOfBoundsException::class );
$options->setMultiple( [
'non_existing_key' => 1
] );
}
}