wiki.techinc.nl/tests/phpunit/unit/includes/config/HashConfigTest.php
daniel ac7138d45b Use HashConfig to override config variables in phpunit tests
This implements config overrides with a HashConfig that is layered on
top of the base config, so we can move away from global variables.

Global variables are still updated using setMwGlobals, for compatibility
with code that is still reading configuration from global variables.

This fixes an issue with the default overrides not being applied to
global variables.

Change-Id: I1922d9b903dcafb83691c2d96790f72747eeef9c
2022-07-07 14:54:06 +10:00

106 lines
2.1 KiB
PHP

<?php
class HashConfigTest extends \MediaWikiUnitTestCase {
/**
* @covers HashConfig::newInstance
*/
public function testNewInstance() {
$conf = HashConfig::newInstance();
$this->assertInstanceOf( HashConfig::class, $conf );
}
/**
* @covers HashConfig::__construct
*/
public function testConstructor() {
$conf = new HashConfig();
$this->assertInstanceOf( HashConfig::class, $conf );
// Test passing arguments to the constructor
$conf2 = new HashConfig( [
'one' => '1',
] );
$this->assertSame( '1', $conf2->get( 'one' ) );
}
/**
* @covers HashConfig::get
*/
public function testGet() {
$conf = new HashConfig( [
'one' => '1',
] );
$this->assertSame( '1', $conf->get( 'one' ) );
$this->expectException( ConfigException::class );
$this->expectExceptionMessage( 'HashConfig::get: undefined option' );
$conf->get( 'two' );
}
/**
* @covers HashConfig::has
*/
public function testHas() {
$conf = new HashConfig( [
'one' => '1',
] );
$this->assertTrue( $conf->has( 'one' ) );
$this->assertFalse( $conf->has( 'two' ) );
}
/**
* @covers HashConfig::clear
*/
public function testClear() {
$conf = new HashConfig( [
'one' => '1',
] );
$this->assertTrue( $conf->has( 'one' ) );
$conf->clear();
$this->assertFalse( $conf->has( 'one' ) );
}
/**
* @covers HashConfig::set
*/
public function testSet() {
$conf = new HashConfig( [
'one' => '1',
] );
$conf->set( 'two', '2' );
$this->assertSame( '2', $conf->get( 'two' ) );
// Check that set overwrites
$conf->set( 'one', '3' );
$this->assertSame( '3', $conf->get( 'one' ) );
}
/**
* @covers HashConfig::getNames
*/
public function testGetNames() {
$conf = new HashConfig( [
'one' => '1',
] );
$conf->set( 'two', '2' );
$this->assertSame( [ 'one', 'two' ], $conf->getNames() );
}
/**
* @covers HashConfig::getIterator
*/
public function testTraversable() {
$conf = new HashConfig( [
'one' => '1',
] );
$conf->set( 'two', '2' );
$actual = [];
foreach ( $conf as $name => $value ) {
$actual[$name] = $value;
}
$this->assertSame( [ 'one' => '1', 'two' => '2' ], $actual );
}
}