]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - tests/phpunit/includes/config/GlobalVarConfigTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / config / GlobalVarConfigTest.php
diff --git a/tests/phpunit/includes/config/GlobalVarConfigTest.php b/tests/phpunit/includes/config/GlobalVarConfigTest.php
new file mode 100644 (file)
index 0000000..a6b220d
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+
+class GlobalVarConfigTest extends MediaWikiTestCase {
+
+       /**
+        * @covers GlobalVarConfig::newInstance
+        */
+       public function testNewInstance() {
+               $config = GlobalVarConfig::newInstance();
+               $this->assertInstanceOf( 'GlobalVarConfig', $config );
+               $this->maybeStashGlobal( 'wgBaz' );
+               $GLOBALS['wgBaz'] = 'somevalue';
+               // Check prefix is set to 'wg'
+               $this->assertEquals( 'somevalue', $config->get( 'Baz' ) );
+       }
+
+       /**
+        * @covers GlobalVarConfig::__construct
+        * @dataProvider provideConstructor
+        */
+       public function testConstructor( $prefix ) {
+               $var = $prefix . 'GlobalVarConfigTest';
+               $rand = wfRandomString();
+               $this->maybeStashGlobal( $var );
+               $GLOBALS[$var] = $rand;
+               $config = new GlobalVarConfig( $prefix );
+               $this->assertInstanceOf( 'GlobalVarConfig', $config );
+               $this->assertEquals( $rand, $config->get( 'GlobalVarConfigTest' ) );
+       }
+
+       public static function provideConstructor() {
+               return [
+                       [ 'wg' ],
+                       [ 'ef' ],
+                       [ 'smw' ],
+                       [ 'blahblahblahblah' ],
+                       [ '' ],
+               ];
+       }
+
+       /**
+        * @covers GlobalVarConfig::has
+        * @covers GlobalVarConfig::hasWithPrefix
+        */
+       public function testHas() {
+               $this->maybeStashGlobal( 'wgGlobalVarConfigTestHas' );
+               $GLOBALS['wgGlobalVarConfigTestHas'] = wfRandomString();
+               $this->maybeStashGlobal( 'wgGlobalVarConfigTestNotHas' );
+               $config = new GlobalVarConfig();
+               $this->assertTrue( $config->has( 'GlobalVarConfigTestHas' ) );
+               $this->assertFalse( $config->has( 'GlobalVarConfigTestNotHas' ) );
+       }
+
+       public static function provideGet() {
+               $set = [
+                       'wgSomething' => 'default1',
+                       'wgFoo' => 'default2',
+                       'efVariable' => 'default3',
+                       'BAR' => 'default4',
+               ];
+
+               foreach ( $set as $var => $value ) {
+                       $GLOBALS[$var] = $value;
+               }
+
+               return [
+                       [ 'Something', 'wg', 'default1' ],
+                       [ 'Foo', 'wg', 'default2' ],
+                       [ 'Variable', 'ef', 'default3' ],
+                       [ 'BAR', '', 'default4' ],
+                       [ 'ThisGlobalWasNotSetAbove', 'wg', false ]
+               ];
+       }
+
+       /**
+        * @dataProvider provideGet
+        * @covers GlobalVarConfig::get
+        * @covers GlobalVarConfig::getWithPrefix
+        * @param string $name
+        * @param string $prefix
+        * @param string $expected
+        */
+       public function testGet( $name, $prefix, $expected ) {
+               $config = new GlobalVarConfig( $prefix );
+               if ( $expected === false ) {
+                       $this->setExpectedException( 'ConfigException', 'GlobalVarConfig::get: undefined option:' );
+               }
+               $this->assertEquals( $config->get( $name ), $expected );
+       }
+
+       private function maybeStashGlobal( $var ) {
+               if ( array_key_exists( $var, $GLOBALS ) ) {
+                       // Will be reset after this test is over
+                       $this->stashMwGlobals( $var );
+               }
+       }
+}