Merge "Hygiene: use UserGetDefaultOptions instead of ExtensionRegistration" into mpga

This commit is contained in:
jenkins-bot 2017-01-10 18:53:45 +00:00 committed by Gerrit Code Review
commit fc2b055934
5 changed files with 46 additions and 20 deletions

View file

@ -141,19 +141,12 @@ class PopupsHooks {
/**
* Register default preferences for popups
*
* @param array $wgDefaultUserOptions Reference to default options array
*/
public static function onExtensionRegistration() {
global $wgDefaultUserOptions;
/**
* We use MainConfig because PopupConfig is not available yet. We cannot use
* ExtensionFunctions as it's called too late (see T153280)
*
* @todo Use ConfigFactory() - when T153280 gets fixed switch it to ExtensionFunctions hook
* or when ConfigRegistry gets populated before calling `callback` ExtensionRegistry hook
*/
$config = \MediaWiki\MediaWikiServices::getInstance()->getMainConfig();
public static function onUserGetDefaultOptions( &$wgDefaultUserOptions ) {
$wgDefaultUserOptions[ PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] =
$config->get( 'PopupsOptInDefaultState' );
PopupsContext::getInstance()->getDefaultIsEnabledState();
}
}

View file

@ -30,6 +30,9 @@
],
"GetPreferences": [
"PopupsHooks::onGetPreferences"
],
"UserGetDefaultOptions": [
"PopupsHooks::onUserGetDefaultOptions"
]
},
"MessagesDirs": {
@ -40,7 +43,6 @@
"EventLoggingSchemas": {
"Popups": 16163887
},
"callback": "PopupsHooks::onExtensionRegistration",
"config": {
"@PopupsBetaFeature": "@var bool: Whether the extension should be enabled as an opt-in beta feature. If true, the BetaFeatures extension must be installed. False by default.",
"PopupsBetaFeature": false,

View file

@ -103,6 +103,17 @@ class PopupsContext {
public function isBetaFeatureEnabled() {
return $this->config->get( 'PopupsBetaFeature' ) === true;
}
/**
* Get default Page previews state
*
* @see PopupsContext::PREVIEWS_ENABLED
* @see PopupsContext::PREVIEWS_DISABLED
* @return string
*/
public function getDefaultIsEnabledState() {
return $this->config->get( 'PopupsOptInDefaultState' );
}
/**
* Are Page previews visible on User Preferences Page
*

View file

@ -271,4 +271,13 @@ class PopupsContextTest extends MediaWikiTestCase {
$this->assertInstanceOf( PopupsContext::class, $first );
}
/**
* @covers ::getDefaultIsEnabledState
*/
public function testGetDefaultIsEnabledState() {
$this->setMwGlobals( [
'wgPopupsOptInDefaultState' => "2"
] );
$this->assertEquals( "2", PopupsContext::getInstance()->getDefaultIsEnabledState() );
}
}

View file

@ -150,16 +150,27 @@ class PopupsHooksTest extends MediaWikiTestCase {
}
/**
* @covers PopupsHooks::onExtensionRegistration
* @covers PopupsHooks::onUserGetDefaultOptions
*/
public function testOnExtensionRegistration() {
global $wgDefaultUserOptions;
public function testOnUserGetDefaultOptions() {
$userOptions = [
'test' => 'not_empty'
];
$contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class )
->setMethods( [ 'getDefaultIsEnabledState' ] )
->disableOriginalConstructor()
->getMock();
$test = 'testValue';
$this->setMwGlobals( [ 'wgPopupsOptInDefaultState' => $test ] );
PopupsHooks::onExtensionRegistration();
$this->assertEquals( $test,
$wgDefaultUserOptions[ \Popups\PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] );
$contextMock->expects( $this->once() )
->method( 'getDefaultIsEnabledState' )
->willReturn( true );
PopupsContextTestWrapper::injectTestInstance( $contextMock );
PopupsHooks::onUserGetDefaultOptions( $userOptions );
$this->assertCount( 2, $userOptions );
$this->assertEquals( true,
$userOptions[ \Popups\PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] );
}
/**