X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fconfig%2FConfigFactoryTest.php;h=2c1d1e6f0e7656e6f7127db52354fb8630f319c0;hb=279dd4156c6195be16fe497980d73cd2e5c95884;hp=c4829d2e18232b20af2bffac5c335211dd3137d6;hpb=fb7b3eebeb8de47eb42e8d6ccf204106a2d6d9e4;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/config/ConfigFactoryTest.php b/tests/phpunit/includes/config/ConfigFactoryTest.php index c4829d2e18..2c1d1e6f0e 100644 --- a/tests/phpunit/includes/config/ConfigFactoryTest.php +++ b/tests/phpunit/includes/config/ConfigFactoryTest.php @@ -2,29 +2,77 @@ class ConfigFactoryTest extends MediaWikiTestCase { - public function tearDown() { - // Reset this since we mess with it a bit - ConfigFactory::destroyDefaultInstance(); - parent::tearDown(); - } - /** * @covers ConfigFactory::register */ public function testRegister() { $factory = new ConfigFactory(); $factory->register( 'unittest', 'GlobalVarConfig::newInstance' ); - $this->assertTrue( true ); // No exception thrown + $this->assertInstanceOf( GlobalVarConfig::class, $factory->makeConfig( 'unittest' ) ); + } + + /** + * @covers ConfigFactory::register + */ + public function testRegisterInvalid() { + $factory = new ConfigFactory(); $this->setExpectedException( 'InvalidArgumentException' ); $factory->register( 'invalid', 'Invalid callback' ); } + /** + * @covers ConfigFactory::register + */ + public function testRegisterInstance() { + $config = GlobalVarConfig::newInstance(); + $factory = new ConfigFactory(); + $factory->register( 'unittest', $config ); + $this->assertSame( $config, $factory->makeConfig( 'unittest' ) ); + } + + /** + * @covers ConfigFactory::register + */ + public function testRegisterAgain() { + $factory = new ConfigFactory(); + $factory->register( 'unittest', 'GlobalVarConfig::newInstance' ); + $config1 = $factory->makeConfig( 'unittest' ); + + $factory->register( 'unittest', 'GlobalVarConfig::newInstance' ); + $config2 = $factory->makeConfig( 'unittest' ); + + $this->assertNotSame( $config1, $config2 ); + } + + /** + * @covers ConfigFactory::register + */ + public function testGetConfigNames() { + $factory = new ConfigFactory(); + $factory->register( 'foo', 'GlobalVarConfig::newInstance' ); + $factory->register( 'bar', new HashConfig() ); + + $this->assertEquals( [ 'foo', 'bar' ], $factory->getConfigNames() ); + } + /** * @covers ConfigFactory::makeConfig */ public function testMakeConfig() { $factory = new ConfigFactory(); $factory->register( 'unittest', 'GlobalVarConfig::newInstance' ); + + $conf = $factory->makeConfig( 'unittest' ); + $this->assertInstanceOf( 'Config', $conf ); + $this->assertSame( $conf, $factory->makeConfig( 'unittest' ) ); + } + + /** + * @covers ConfigFactory::makeConfig + */ + public function testMakeConfigFallback() { + $factory = new ConfigFactory(); + $factory->register( '*', 'GlobalVarConfig::newInstance' ); $conf = $factory->makeConfig( 'unittest' ); $this->assertInstanceOf( 'Config', $conf ); } @@ -54,17 +102,10 @@ class ConfigFactoryTest extends MediaWikiTestCase { * @covers ConfigFactory::getDefaultInstance */ public function testGetDefaultInstance() { - // Set $wgConfigRegistry, and check the default - // instance read from it - $this->setMwGlobals( 'wgConfigRegistry', [ - 'conf1' => 'GlobalVarConfig::newInstance', - 'conf2' => 'GlobalVarConfig::newInstance', - ] ); - ConfigFactory::destroyDefaultInstance(); + // NOTE: the global config factory returned here has been overwritten + // for operation in test mode. It may not reflect LocalSettings. $factory = ConfigFactory::getDefaultInstance(); - $this->assertInstanceOf( 'Config', $factory->makeConfig( 'conf1' ) ); - $this->assertInstanceOf( 'Config', $factory->makeConfig( 'conf2' ) ); - $this->setExpectedException( 'ConfigException' ); - $factory->makeConfig( 'conf3' ); + $this->assertInstanceOf( 'Config', $factory->makeConfig( 'main' ) ); } + }