mediawiki-skins-MinervaNeue/tests/phpunit/unit/SkinOptionsTest.php
Piotr Miazga 9ece509c99 Hygiene: SkinOptions should validate options
Changes:
 - when trying to set unknown option, throw exception
 - added unit tests

Bug: T221012
Change-Id: I0d1a43fb5a7179b8e9cd578e3e33bab12ddfd61c
2019-07-31 22:24:29 +00:00

70 lines
1.9 KiB
PHP

<?php
namespace Tests\MediaWiki\Minerva;
use MediaWiki\Minerva\SkinOptions;
/**
* Class SkinMinervaTest
* @package Tests\MediaWiki\Minerva
* @group MinervaNeue
* @coversDefaultClass \MediaWiki\Minerva\SkinOptions
*/
class SkinOptionsTest extends \MediaWikiUnitTestCase {
/**
* @covers ::get
* @covers ::getAll
* @covers ::setMultiple
*/
public function testSettersAndGetters() {
$options = new SkinOptions();
$defaultValue = $options->get( SkinOptions::OPTION_AMC );
$options->setMultiple( [ SkinOptions::OPTION_AMC => !$defaultValue ] );
$allOptions = $options->getAll();
$this->assertEquals( !$defaultValue, $options->get( SkinOptions::OPTION_AMC ) );
$this->assertArrayHasKey( SkinOptions::OPTION_AMC, $allOptions );
$this->assertEquals( !$defaultValue, $allOptions[ SkinOptions::OPTION_AMC ] );
}
/**
* @covers ::hasSkinOptions
*/
public function testHasSkinOptions() {
$options = new SkinOptions();
// set OPTION_AMC to true just in case someone decides to set everything to false
// sometime in the future.
$options->setMultiple( [ SkinOptions::OPTION_AMC => true ] );
$this->assertTrue( $options->hasSkinOptions() );
$options->setMultiple( [ SkinOptions::OPTION_BACK_TO_TOP => true ] );
$this->assertTrue( $options->hasSkinOptions() );
$options->setMultiple( [
SkinOptions::OPTION_AMC => false,
SkinOptions::OPTION_BACK_TO_TOP => false
] );
$this->assertFalse( $options->hasSkinOptions() );
}
/**
* @covers ::get
* @expectedException \OutOfBoundsException
*/
public function testGettingUnknownKeyShouldThrowException() {
$options = new SkinOptions();
$options->get( 'non_existing_key' );
}
/**
* @covers ::get
* @expectedException \OutOfBoundsException
*/
public function testSettingUnknownKeyShouldThrowException() {
$options = new SkinOptions();
$options->setMultiple( [
'non_existing_key' => 1
] );
}
}