Improve GlobalVarConfigTest
authorKunal Mehta <legoktm@gmail.com>
Sat, 23 Aug 2014 21:11:43 +0000 (14:11 -0700)
committerKunal Mehta <legoktm@gmail.com>
Sat, 23 Aug 2014 21:11:43 +0000 (14:11 -0700)
Should bring includes/config to 100% coverage :D

Change-Id: I929448b7a306fb1efb8b523d16305a7666f78fd0

tests/phpunit/includes/config/GlobalVarConfigTest.php

index 662f268..a999081 100644 (file)
@@ -8,6 +8,34 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
        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 array(
+                       array( 'wg' ),
+                       array( 'ef' ),
+                       array( 'smw' ),
+                       array( 'blahblahblahblah' ),
+                       array( '' ),
+               );
        }
 
        public function provideGet() {
@@ -27,6 +55,7 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
                        array( 'Foo', 'wg', 'default2' ),
                        array( 'Variable', 'ef', 'default3' ),
                        array( 'BAR', '', 'default4' ),
+                       array( 'ThisGlobalWasNotSetAbove', 'wg', false )
                );
        }
 
@@ -40,6 +69,9 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
         */
        public function testGet( $name, $prefix, $expected ) {
                $config = new GlobalVarConfig( $prefix );
+               if ( $expected === false ) {
+                       $this->setExpectedException( 'ConfigException', 'GlobalVarConfig::getWithPrefix: undefined variable:' );
+               }
                $this->assertEquals( $config->get( $name ), $expected );
        }
 
@@ -52,16 +84,20 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
                );
        }
 
+       private function maybeStashGlobal( $var ) {
+               if ( array_key_exists( $var, $GLOBALS ) ) {
+                       // Will be reset after this test is over
+                       $this->stashMwGlobals( $var );
+               }
+       }
+
        /**
         * @dataProvider provideSet
         * @covers GlobalVarConfig::set
         * @covers GlobalVarConfig::setWithPrefix
         */
        public function testSet( $name, $prefix, $var ) {
-               if ( array_key_exists( $var, $GLOBALS ) ) {
-                       // Will be reset after this test is over
-                       $this->stashMwGlobals( $var );
-               }
+               $this->maybeStashGlobal( $var );
                $config = new GlobalVarConfig( $prefix );
                $random = wfRandomString();
                $config->set( $name, $random );