summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/config/GlobalVarConfigTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/tests/phpunit/includes/config/GlobalVarConfigTest.php')
-rw-r--r--www/wiki/tests/phpunit/includes/config/GlobalVarConfigTest.php97
1 files changed, 97 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/config/GlobalVarConfigTest.php b/www/wiki/tests/phpunit/includes/config/GlobalVarConfigTest.php
new file mode 100644
index 00000000..db5f73d4
--- /dev/null
+++ b/www/wiki/tests/phpunit/includes/config/GlobalVarConfigTest.php
@@ -0,0 +1,97 @@
+<?php
+
+class GlobalVarConfigTest extends MediaWikiTestCase {
+
+ /**
+ * @covers GlobalVarConfig::newInstance
+ */
+ public function testNewInstance() {
+ $config = GlobalVarConfig::newInstance();
+ $this->assertInstanceOf( GlobalVarConfig::class, $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::class, $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::class, '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 );
+ }
+ }
+}