Merge "Rephrase tog-norollbackdiff"
[lhc/web/wiklou.git] / tests / phpunit / includes / config / ConfigFactoryTest.php
1 <?php
2
3 class ConfigFactoryTest extends MediaWikiTestCase {
4
5 /**
6 * @covers ConfigFactory::register
7 */
8 public function testRegister() {
9 $factory = new ConfigFactory();
10 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
11 $this->assertInstanceOf( GlobalVarConfig::class, $factory->makeConfig( 'unittest' ) );
12 }
13
14 /**
15 * @covers ConfigFactory::register
16 */
17 public function testRegisterInvalid() {
18 $factory = new ConfigFactory();
19 $this->setExpectedException( 'InvalidArgumentException' );
20 $factory->register( 'invalid', 'Invalid callback' );
21 }
22
23 /**
24 * @covers ConfigFactory::register
25 */
26 public function testRegisterInstance() {
27 $config = GlobalVarConfig::newInstance();
28 $factory = new ConfigFactory();
29 $factory->register( 'unittest', $config );
30 $this->assertSame( $config, $factory->makeConfig( 'unittest' ) );
31 }
32
33 /**
34 * @covers ConfigFactory::register
35 */
36 public function testRegisterAgain() {
37 $factory = new ConfigFactory();
38 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
39 $config1 = $factory->makeConfig( 'unittest' );
40
41 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
42 $config2 = $factory->makeConfig( 'unittest' );
43
44 $this->assertNotSame( $config1, $config2 );
45 }
46
47 /**
48 * @covers ConfigFactory::register
49 */
50 public function testGetConfigNames() {
51 $factory = new ConfigFactory();
52 $factory->register( 'foo', 'GlobalVarConfig::newInstance' );
53 $factory->register( 'bar', new HashConfig() );
54
55 $this->assertEquals( [ 'foo', 'bar' ], $factory->getConfigNames() );
56 }
57
58 /**
59 * @covers ConfigFactory::makeConfig
60 */
61 public function testMakeConfig() {
62 $factory = new ConfigFactory();
63 $factory->register( 'unittest', 'GlobalVarConfig::newInstance' );
64
65 $conf = $factory->makeConfig( 'unittest' );
66 $this->assertInstanceOf( 'Config', $conf );
67 $this->assertSame( $conf, $factory->makeConfig( 'unittest' ) );
68 }
69
70 /**
71 * @covers ConfigFactory::makeConfig
72 */
73 public function testMakeConfigFallback() {
74 $factory = new ConfigFactory();
75 $factory->register( '*', 'GlobalVarConfig::newInstance' );
76 $conf = $factory->makeConfig( 'unittest' );
77 $this->assertInstanceOf( 'Config', $conf );
78 }
79
80 /**
81 * @covers ConfigFactory::makeConfig
82 */
83 public function testMakeConfigWithNoBuilders() {
84 $factory = new ConfigFactory();
85 $this->setExpectedException( 'ConfigException' );
86 $factory->makeConfig( 'nobuilderregistered' );
87 }
88
89 /**
90 * @covers ConfigFactory::makeConfig
91 */
92 public function testMakeConfigWithInvalidCallback() {
93 $factory = new ConfigFactory();
94 $factory->register( 'unittest', function () {
95 return true; // Not a Config object
96 } );
97 $this->setExpectedException( 'UnexpectedValueException' );
98 $factory->makeConfig( 'unittest' );
99 }
100
101 /**
102 * @covers ConfigFactory::getDefaultInstance
103 */
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' ) );
109 }
110
111 }