X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fconfig%2FConfigFactoryTest.php;h=2c1d1e6f0e7656e6f7127db52354fb8630f319c0;hb=279dd4156c6195be16fe497980d73cd2e5c95884;hp=2288507e49c9e7783a9b6898a5b6c6f772f7c0b6;hpb=816e6ded007382f35df38ea8f4b5a32e8e256b78;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/config/ConfigFactoryTest.php b/tests/phpunit/includes/config/ConfigFactoryTest.php index 2288507e49..2c1d1e6f0e 100644 --- a/tests/phpunit/includes/config/ConfigFactoryTest.php +++ b/tests/phpunit/includes/config/ConfigFactoryTest.php @@ -8,17 +8,71 @@ class ConfigFactoryTest extends MediaWikiTestCase { 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 ); } @@ -48,10 +102,10 @@ class ConfigFactoryTest extends MediaWikiTestCase { * @covers ConfigFactory::getDefaultInstance */ public function testGetDefaultInstance() { + // 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( 'main' ) ); - - $this->setExpectedException( 'ConfigException' ); - $factory->makeConfig( 'xyzzy' ); } + }