3 class ConfigFactoryTest
extends MediaWikiTestCase
{
6 * @covers ConfigFactory::register
8 public function testRegister() {
9 $factory = new ConfigFactory();
10 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
11 $this->assertInstanceOf( GlobalVarConfig
::class, $factory->makeConfig( 'unittest' ) );
15 * @covers ConfigFactory::register
17 public function testRegisterInvalid() {
18 $factory = new ConfigFactory();
19 $this->setExpectedException( 'InvalidArgumentException' );
20 $factory->register( 'invalid', 'Invalid callback' );
24 * @covers ConfigFactory::register
26 public function testRegisterInstance() {
27 $config = GlobalVarConfig
::newInstance();
28 $factory = new ConfigFactory();
29 $factory->register( 'unittest', $config );
30 $this->assertSame( $config, $factory->makeConfig( 'unittest' ) );
34 * @covers ConfigFactory::register
36 public function testRegisterAgain() {
37 $factory = new ConfigFactory();
38 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
39 $config1 = $factory->makeConfig( 'unittest' );
41 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
42 $config2 = $factory->makeConfig( 'unittest' );
44 $this->assertNotSame( $config1, $config2 );
48 * @covers ConfigFactory::register
50 public function testGetConfigNames() {
51 $factory = new ConfigFactory();
52 $factory->register( 'foo', 'GlobalVarConfig::newInstance' );
53 $factory->register( 'bar', new HashConfig() );
55 $this->assertEquals( [ 'foo', 'bar' ], $factory->getConfigNames() );
59 * @covers ConfigFactory::makeConfig
61 public function testMakeConfig() {
62 $factory = new ConfigFactory();
63 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
65 $conf = $factory->makeConfig( 'unittest' );
66 $this->assertInstanceOf( 'Config', $conf );
67 $this->assertSame( $conf, $factory->makeConfig( 'unittest' ) );
71 * @covers ConfigFactory::makeConfig
73 public function testMakeConfigFallback() {
74 $factory = new ConfigFactory();
75 $factory->register( '*', 'GlobalVarConfig::newInstance' );
76 $conf = $factory->makeConfig( 'unittest' );
77 $this->assertInstanceOf( 'Config', $conf );
81 * @covers ConfigFactory::makeConfig
83 public function testMakeConfigWithNoBuilders() {
84 $factory = new ConfigFactory();
85 $this->setExpectedException( 'ConfigException' );
86 $factory->makeConfig( 'nobuilderregistered' );
90 * @covers ConfigFactory::makeConfig
92 public function testMakeConfigWithInvalidCallback() {
93 $factory = new ConfigFactory();
94 $factory->register( 'unittest', function () {
95 return true; // Not a Config object
97 $this->setExpectedException( 'UnexpectedValueException' );
98 $factory->makeConfig( 'unittest' );
102 * @covers ConfigFactory::getDefaultInstance
104 public function testGetDefaultInstance() {
105 // NOTE: the global config factory returned here has been overwritten
106 // for operation in test mode. It may not reflect LocalSettings.
107 $factory = ConfigFactory
::getDefaultInstance();
108 $this->assertInstanceOf( 'Config', $factory->makeConfig( 'main' ) );