From 3d0c5b1cc30ed451b9634c12e261d4778334e8cc Mon Sep 17 00:00:00 2001 From: Piotr Miazga Date: Fri, 21 Jul 2017 19:06:08 +0200 Subject: [PATCH] Hygiene: Dependency Injection for Popups Changes: - removed ugly PopupsContext::getInstance - removed ugly PopupsContextTestWrapper helper - defined all services inside ServiceWirings - fixed unit tests to test classes directly or use MediawikiServices Change-Id: Ie27e28bb07aebe01014848c290369b1b1f098e9b --- extension.json | 3 + includes/PopupsContext.php | 39 +------ includes/PopupsHooks.php | 26 +++-- includes/ServiceWirings.php | 44 +++++++ includes/UserPreferencesChangeHandler.php | 12 +- tests/phpunit/PopupsContextTest.php | 107 ++++++------------ tests/phpunit/PopupsHooksTest.php | 34 +++--- .../UserPreferencesChangeHandlerTest.php | 8 +- 8 files changed, 118 insertions(+), 155 deletions(-) create mode 100644 includes/ServiceWirings.php diff --git a/extension.json b/extension.json index 9629dc4bf..33a60ce78 100644 --- a/extension.json +++ b/extension.json @@ -132,5 +132,8 @@ "localBasePath": "", "remoteExtPath": "Popups" }, + "ServiceWiringFiles": [ + "includes/ServiceWirings.php" + ], "manifest_version": 1 } diff --git a/includes/PopupsContext.php b/includes/PopupsContext.php index 56bec98be..7d8612013 100644 --- a/includes/PopupsContext.php +++ b/includes/PopupsContext.php @@ -20,14 +20,10 @@ */ namespace Popups; -use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; use ExtensionRegistry; use Config; use Popups\EventLogging\EventLogger; -use Popups\EventLogging\EventLoggerFactory; -use Popups\EventLogging\MWEventLogger; -use Popups\EventLogging\NullLogger; /** * Popups Module @@ -89,9 +85,8 @@ class PopupsContext { * @param EventLogger $eventLogger A logger capable of logging EventLogging * events */ - protected function __construct( Config $config, ExtensionRegistry $extensionRegistry, + public function __construct( Config $config, ExtensionRegistry $extensionRegistry, PopupsGadgetsIntegration $gadgetsIntegration, EventLogger $eventLogger ) { - /** @todo Use MediaWikiServices Service Locator when it's ready */ $this->extensionRegistry = $extensionRegistry; $this->gadgetsIntegration = $gadgetsIntegration; $this->eventLogger = $eventLogger; @@ -99,27 +94,6 @@ class PopupsContext { $this->config = $config; } - /** - * Get a PopupsContext instance - * - * @return PopupsContext - */ - public static function getInstance() { - if ( !self::$instance ) { - /** @todo Use MediaWikiServices Service Locator when it's ready */ - - $registry = ExtensionRegistry::getInstance(); - $config = MediaWikiServices::getInstance()->getConfigFactory() - ->makeConfig( self::EXTENSION_NAME ); - $gadgetsIntegration = new PopupsGadgetsIntegration( $config, $registry ); - $eventLoggerFactory = new EventLoggerFactory( $config, $registry ); - - self::$instance = new PopupsContext( $config, $registry, - $gadgetsIntegration, $eventLoggerFactory->get() ); - } - return self::$instance; - } - /** * @param \User $user User whose gadgets settings are being checked * @return bool @@ -188,16 +162,7 @@ class PopupsContext { * @return \Psr\Log\LoggerInterface */ public function getLogger() { - return LoggerFactory::getInstance( self::LOGGER_CHANNEL ); - } - - /** - * Get Module config - * - * @return \Config - */ - public function getConfig() { - return $this->config; + return MediaWikiServices::getInstance()->getService( 'Popups.Logger' ); } /** diff --git a/includes/PopupsHooks.php b/includes/PopupsHooks.php index 9a7807e39..2f0cb6515 100644 --- a/includes/PopupsHooks.php +++ b/includes/PopupsHooks.php @@ -20,6 +20,7 @@ */ namespace Popups; +use MediaWiki\MediaWikiServices; use User; use OutputPage; use Skin; @@ -40,7 +41,9 @@ class PopupsHooks { */ static function onGetBetaPreferences( User $user, array &$prefs ) { global $wgExtensionAssetsPath; - if ( PopupsContext::getInstance()->isBetaFeatureEnabled() !== true ) { + /** @var PopupsContext $context */ + $context = MediaWikiServices::getInstance()->getService( 'Popups.Context' ); + if ( $context->isBetaFeatureEnabled() !== true ) { return; } $prefs[PopupsContext::PREVIEWS_BETA_PREFERENCE_NAME] = [ @@ -65,7 +68,7 @@ class PopupsHooks { * @param array &$prefs Preferences description array, to be fed to a HTMLForm object */ static function onGetPreferences( User $user, array &$prefs ) { - $context = PopupsContext::getInstance(); + $context = MediaWikiServices::getInstance()->getService( 'Popups.Context' ); if ( !$context->showPreviewsOptInOnPreferencesPage() ) { return; @@ -108,17 +111,17 @@ class PopupsHooks { * @return bool */ public static function onBeforePageDisplay( OutputPage &$out, Skin &$skin ) { - $module = PopupsContext::getInstance(); + $context = MediaWikiServices::getInstance()->getService( 'Popups.Context' ); $user = $out->getUser(); - if ( !$module->areDependenciesMet() ) { - $logger = $module->getLogger(); + if ( !$context->areDependenciesMet() ) { + $logger = $context->getLogger(); $logger->error( 'Popups requires the PageImages and TextExtracts extensions. ' . 'If Beta mode is on it requires also BetaFeatures extension' ); return true; } - if ( !$module->isBetaFeatureEnabled() || $module->shouldSendModuleToUser( $user ) ) { + if ( !$context->isBetaFeatureEnabled() || $context->shouldSendModuleToUser( $user ) ) { $out->addModules( [ 'ext.popups' ] ); } @@ -129,7 +132,7 @@ class PopupsHooks { * @param array &$vars Array of variables to be added into the output of the startup module */ public static function onResourceLoaderGetConfigVars( array &$vars ) { - $conf = PopupsContext::getInstance()->getConfig(); + $conf = MediaWikiServices::getInstance()->getService( 'Popups.Config' ); $vars['wgPopupsSchemaSamplingRate'] = $conf->get( 'PopupsSchemaSamplingRate' ); $vars['wgPopupsBetaFeature'] = $conf->get( 'PopupsBetaFeature' ); $vars['wgPopupsGateway'] = $conf->get( 'PopupsGateway' ); @@ -150,11 +153,11 @@ class PopupsHooks { * @param OutputPage $out OutputPage instance calling the hook */ public static function onMakeGlobalVariablesScript( array &$vars, OutputPage $out ) { - $module = PopupsContext::getInstance(); + $context = MediaWikiServices::getInstance()->getService( 'Popups.Context' ); $user = $out->getUser(); - $vars['wgPopupsShouldSendModuleToUser'] = $module->shouldSendModuleToUser( $user ); - $vars['wgPopupsConflictsWithNavPopupGadget'] = $module->conflictsWithNavPopupsGadget( + $vars['wgPopupsShouldSendModuleToUser'] = $context->shouldSendModuleToUser( $user ); + $vars['wgPopupsConflictsWithNavPopupGadget'] = $context->conflictsWithNavPopupsGadget( $user ); } @@ -164,8 +167,9 @@ class PopupsHooks { * @param array &$wgDefaultUserOptions Reference to default options array */ public static function onUserGetDefaultOptions( &$wgDefaultUserOptions ) { + $context = MediaWikiServices::getInstance()->getService( 'Popups.Context' ); $wgDefaultUserOptions[ PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] = - PopupsContext::getInstance()->getDefaultIsEnabledState(); + $context->getDefaultIsEnabledState(); } } diff --git a/includes/ServiceWirings.php b/includes/ServiceWirings.php new file mode 100644 index 000000000..4a6b83023 --- /dev/null +++ b/includes/ServiceWirings.php @@ -0,0 +1,44 @@ + function ( MediaWikiServices $services ) { + return $services->getService( 'ConfigFactory' ) + ->makeConfig( PopupsContext::EXTENSION_NAME ); + }, + 'Popups.GadgetsIntegration' => function ( MediaWikiServices $services ) { + return new PopupsGadgetsIntegration( + $services->getService( 'Popups.Config' ), + ExtensionRegistry::getInstance() + ); + }, + 'Popups.EventLogger' => function ( MediaWikiServices $serivces ) { + $factory = new EventLoggerFactory( + $serivces->getService( 'Popups.Config' ), + ExtensionRegistry::getInstance() + ); + return $factory->get(); + }, + 'Popups.UserPreferencesChangeHandler' => function ( MediaWikiServices $services ) { + return new UserPreferencesChangeHandler( + $services->getService( 'Popups.Context' ) + ); + }, + 'Popups.Logger' => function ( MediaWikiServices $services ) { + return LoggerFactory::getInstance( PopupsContext::LOGGER_CHANNEL ); + }, + 'Popups.Context' => function ( MediaWikiServices $services ) { + return new PopupsContext( + $services->getService( 'Popups.Config' ), + ExtensionRegistry::getInstance(), + $services->getService( 'Popups.GadgetsIntegration' ), + $services->getService( 'Popups.EventLogger' ) + ); + } +]; diff --git a/includes/UserPreferencesChangeHandler.php b/includes/UserPreferencesChangeHandler.php index b705eda12..ccd3770b7 100644 --- a/includes/UserPreferencesChangeHandler.php +++ b/includes/UserPreferencesChangeHandler.php @@ -20,6 +20,7 @@ */ namespace Popups; +use MediaWiki\MediaWikiServices; use User; use PreferencesForm; @@ -29,10 +30,6 @@ use PreferencesForm; * @package Popups */ class UserPreferencesChangeHandler { - /** - * @var UserPreferencesChangeHandler - */ - private static $instance; /** * @var PopupsContext */ @@ -42,7 +39,7 @@ class UserPreferencesChangeHandler { * UserPreferencesChangeHandler constructor. * @param PopupsContext $context Popups context instance */ - public function __construct( PopupsContext $context ) { + public function __construct( $context ) { $this->popupsContext = $context; } @@ -70,10 +67,7 @@ class UserPreferencesChangeHandler { * @return UserPreferencesChangeHandler */ private static function newFromGlobalState() { - if ( self::$instance === null ) { - self::$instance = new UserPreferencesChangeHandler( PopupsContext::getInstance() ); - } - return self::$instance; + return MediaWikiServices::getInstance()->getService( 'Popups.UserPreferencesChangeHandler' ); } /** diff --git a/tests/phpunit/PopupsContextTest.php b/tests/phpunit/PopupsContextTest.php index 7ac4589d2..79a90f9d7 100644 --- a/tests/phpunit/PopupsContextTest.php +++ b/tests/phpunit/PopupsContextTest.php @@ -18,7 +18,6 @@ * @file * @ingroup extensions */ -require_once 'PopupsContextTestWrapper.php'; use Popups\PopupsContext; @@ -35,11 +34,30 @@ class PopupsContextTest extends MediaWikiTestCase { */ const ANONYMOUS_USER = 0; - public function tearDown() { - PopupsContextTestWrapper::resetTestInstance(); - parent::tearDown(); + /** + * Helper method to quickly build Popups Context + * @param ExtensionRegistry|null $registry + * @param \Popups\PopupsGadgetsIntegration|null $integration + * @param \Popups\EventLogging\EventLogger $eventLogger + * @return PopupsContext + */ + protected function getContext( $registry = null, $integration = null, $eventLogger = null ) { + $config = new GlobalVarConfig(); + $registry = $registry ?: ExtensionRegistry::getInstance(); + if ( $eventLogger === null ) { + $eventLogger = $this->getMockBuilder( \Popups\EventLogging\EventLogger::class ) + ->getMock(); + } + if ( $integration === null ) { + $integration = $this->getMockBuilder( \Popups\PopupsGadgetsIntegration::class ) + ->disableOriginalConstructor() + ->setMethods( [ 'conflictsWithNavPopupsGadget' ] ) + ->getMock(); + $integration->method( 'conflictsWithNavPopupsGadget' ) + ->willReturn( false ); + } + return new PopupsContext( $config, $registry, $integration, $eventLogger ); } - /** * @covers ::showPreviewsOptInOnPreferencesPage * @dataProvider provideConfigForShowPreviewsInOptIn @@ -48,32 +66,10 @@ class PopupsContextTest extends MediaWikiTestCase { */ public function testShowPreviewsPreferencesPage( $config, $expected ) { $this->setMwGlobals( $config ); - $context = PopupsContext::getInstance(); + $context = $this->getContext(); $this->assertEquals( $expected, $context->showPreviewsOptInOnPreferencesPage() ); } - /** - * @covers ::__construct - * @covers ::getConfig - */ - public function testContextAndConfigInitialization() { - $configMock = $this->getMock( Config::class ); - - $configFactoryMock = $this->getMock( ConfigFactory::class, [ 'makeConfig' ] ); - $configFactoryMock->expects( $this->once() ) - ->method( 'makeConfig' ) - ->with( PopupsContext::EXTENSION_NAME ) - ->will( $this->returnValue( $configMock ) ); - - $mwServices = $this->overrideMwServices(); - $mwServices->redefineService( 'ConfigFactory', function () use ( $configFactoryMock ) { - return $configFactoryMock; - } ); - - $context = PopupsContext::getInstance(); - $this->assertSame( $context->getConfig(), $configMock ); - } - /** * @return array */ @@ -112,7 +108,7 @@ class PopupsContextTest extends MediaWikiTestCase { $this->setMwGlobals( [ "wgPopupsBetaFeature" => false ] ); - $context = PopupsContext::getInstance(); + $context = $this->getContext(); $user = $this->getMutableTestUser()->getUser(); $user->setOption( PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME, $optIn ); $this->assertEquals( $context->shouldSendModuleToUser( $user ), $expected ); @@ -148,14 +144,15 @@ class PopupsContextTest extends MediaWikiTestCase { $this->setMwGlobals( [ "wgPopupsBetaFeature" => true ] ); - $context = PopupsContext::getInstance(); + + $context = $this->getContext(); $user = $this->getMutableTestUser()->getUser(); $user->setOption( PopupsContext::PREVIEWS_BETA_PREFERENCE_NAME, $optIn ); $this->assertEquals( $context->shouldSendModuleToUser( $user ), $expected ); } /** - * Check that Page Previews are disabled for anonymous user + * Check tst Page Previews are disabled for anonymous user * @covers ::shouldSendModuleToUser * @covers ::isBetaFeatureEnabled * @dataProvider providerAnonUserHasDisabledPagePreviews @@ -169,7 +166,7 @@ class PopupsContextTest extends MediaWikiTestCase { "wgPopupsBetaFeature" => $betaFeatureEnabled, ] ); - $context = PopupsContext::getInstance(); + $context = $this->getContext(); $this->assertEquals( $expected, $context->shouldSendModuleToUser( $user ) ); } @@ -216,7 +213,7 @@ class PopupsContextTest extends MediaWikiTestCase { $mock->expects( $this->any() ) ->method( 'isLoaded' ) ->will( new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls( $returnValues ) ); - $context = new PopupsContextTestWrapper( new GlobalVarConfig(), $mock ); + $context = $this->getContext( $mock ); $this->assertEquals( $expected, $context->areDependenciesMet() ); } @@ -267,27 +264,6 @@ class PopupsContextTest extends MediaWikiTestCase { ] ]; } - /** - * @covers ::getLogger - */ - public function testGetLogger() { - $loggerMock = $this->getMock( \Psr\Log\LoggerInterface::class ); - - $this->setLogger( PopupsContext::LOGGER_CHANNEL, $loggerMock ); - $context = PopupsContext::getInstance(); - $this->assertSame( $loggerMock, $context->getLogger() ); - } - - /** - * @covers ::getInstance - */ - public function testGetInstanceReturnsSameObjectEveryTime() { - $first = PopupsContext::getInstance(); - $second = PopupsContext::getInstance(); - - $this->assertSame( $first, $second ); - $this->assertInstanceOf( PopupsContext::class, $first ); - } /** * @covers ::getDefaultIsEnabledState @@ -296,7 +272,8 @@ class PopupsContextTest extends MediaWikiTestCase { $this->setMwGlobals( [ 'wgPopupsOptInDefaultState' => "2" ] ); - $this->assertEquals( "2", PopupsContext::getInstance()->getDefaultIsEnabledState() ); + $context = $this->getContext(); + $this->assertEquals( "2", $context->getDefaultIsEnabledState() ); } /** @@ -315,8 +292,7 @@ class PopupsContextTest extends MediaWikiTestCase { ->with( $user ) ->willReturn( true ); - $context = new PopupsContextTestWrapper( $this->getConfigMock(), - ExtensionRegistry::getInstance(), $integrationMock ); + $context = $this->getContext( null, $integrationMock ); $this->assertEquals( true, $context->conflictsWithNavPopupsGadget( $user ) ); } @@ -327,24 +303,9 @@ class PopupsContextTest extends MediaWikiTestCase { $loggerMock = $this->getMock( \Popups\EventLogging\EventLogger::class ); $loggerMock->expects( $this->once() ) ->method( 'log' ); - $integrationMock = $this->getMockBuilder( \Popups\PopupsGadgetsIntegration::class ) - ->disableOriginalConstructor() - ->setMethods( [ 'conflictsWithNavPopupsGadget' ] ) - ->getMock(); - $context = new PopupsContextTestWrapper( $this->getConfigMock(), - ExtensionRegistry::getInstance(), $integrationMock, $loggerMock ); + $context = $this->getContext( null, null, $loggerMock ); $context->logUserDisabledPagePreviewsEvent(); } - /** - * @return PHPUnit_Framework_MockObject_MockObject|Config - */ - private function getConfigMock() { - $mock = $this->getMockBuilder( 'Config' ) - ->setMethods( [ 'get', 'has' ] ) - ->getMock(); - - return $mock; - } } diff --git a/tests/phpunit/PopupsHooksTest.php b/tests/phpunit/PopupsHooksTest.php index bc73e4028..0562f2188 100644 --- a/tests/phpunit/PopupsHooksTest.php +++ b/tests/phpunit/PopupsHooksTest.php @@ -18,7 +18,6 @@ * @file * @ingroup extensions */ -require_once 'PopupsContextTestWrapper.php'; use Popups\PopupsContext; use Popups\PopupsHooks; @@ -31,7 +30,6 @@ use Popups\PopupsHooks; class PopupsHooksTest extends MediaWikiTestCase { protected function tearDown() { - PopupsContextTestWrapper::resetTestInstance(); parent::tearDown(); } @@ -63,7 +61,7 @@ class PopupsHooksTest extends MediaWikiTestCase { * @covers ::onGetPreferences */ public function testOnGetPreferencesPreviewsDisabled() { - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->disableOriginalConstructor() ->setMethods( [ 'showPreviewsOptInOnPreferencesPage' ] ) ->getMock(); @@ -71,7 +69,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'showPreviewsOptInOnPreferencesPage' ) ->will( $this->returnValue( false ) ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); $prefs = [ 'someNotEmptyValue' => 'notEmpty' ]; PopupsHooks::onGetPreferences( $this->getTestUser()->getUser(), $prefs ); @@ -84,7 +82,7 @@ class PopupsHooksTest extends MediaWikiTestCase { */ public function testOnGetPreferencesNavPopupGadgetIsOn() { $userMock = $this->getTestUser()->getUser(); - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->disableOriginalConstructor() ->setMethods( [ 'showPreviewsOptInOnPreferencesPage', 'conflictsWithNavPopupsGadget' ] ) ->getMock(); @@ -98,7 +96,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->with( $userMock ) ->will( $this->returnValue( true ) ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); $prefs = []; PopupsHooks::onGetPreferences( $this->getTestUser()->getUser(), $prefs ); @@ -114,7 +112,7 @@ class PopupsHooksTest extends MediaWikiTestCase { * @covers ::onGetPreferences */ public function testOnGetPreferencesPreviewsEnabled() { - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->disableOriginalConstructor() ->setMethods( [ 'showPreviewsOptInOnPreferencesPage', 'conflictsWithNavPopupsGadget' ] ) ->getMock(); @@ -126,7 +124,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'conflictsWithNavPopupsGadget' ) ->will( $this->returnValue( false ) ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); $prefs = [ 'skin' => 'skin stuff', 'someNotEmptyValue' => 'notEmpty', @@ -145,7 +143,7 @@ class PopupsHooksTest extends MediaWikiTestCase { * @covers ::onGetPreferences */ public function testOnGetPreferencesPreviewsEnabledWhenSkinIsNotAvailable() { - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->disableOriginalConstructor() ->setMethods( [ 'showPreviewsOptInOnPreferencesPage', 'conflictsWithNavPopupsGadget' ] ) ->getMock(); @@ -157,7 +155,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'conflictsWithNavPopupsGadget' ) ->will( $this->returnValue( false ) ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); $prefs = [ 'someNotEmptyValue' => 'notEmpty', 'other' => 'notEmpty' @@ -202,7 +200,7 @@ class PopupsHooksTest extends MediaWikiTestCase { $userOptions = [ 'test' => 'not_empty' ]; - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->setMethods( [ 'getDefaultIsEnabledState' ] ) ->disableOriginalConstructor() ->getMock(); @@ -211,7 +209,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'getDefaultIsEnabledState' ) ->willReturn( true ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); PopupsHooks::onUserGetDefaultOptions( $userOptions ); $this->assertCount( 2, $userOptions ); @@ -231,7 +229,7 @@ class PopupsHooksTest extends MediaWikiTestCase { $loggerMock->expects( $this->once() ) ->method( 'error' ); - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->disableOriginalConstructor() ->setMethods( [ 'areDependenciesMet', 'getLogger' ] ) ->getMock(); @@ -242,7 +240,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'getLogger' ) ->will( $this->returnValue( $loggerMock ) ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); PopupsHooks::onBeforePageDisplay( $outPageMock, $skinMock ); } @@ -279,7 +277,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'addModules' ) ->with( [ 'ext.popups' ] ); - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->setMethods( [ 'areDependenciesMet', 'isBetaFeatureEnabled', 'shouldSendModuleToUser' ] ) ->disableOriginalConstructor() ->getMock(); @@ -296,7 +294,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'shouldSendModuleToUser' ) ->will( $this->returnValue( $shouldSendModuleToUser ) ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); PopupsHooks::onBeforePageDisplay( $outPageMock, $skinMock ); } @@ -314,7 +312,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->method( 'getUser' ) ->willReturn( $user ); - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContext::class ) ->setMethods( [ 'shouldSendModuleToUser', 'conflictsWithNavPopupsGadget' ] ) ->disableOriginalConstructor() ->getMock(); @@ -327,7 +325,7 @@ class PopupsHooksTest extends MediaWikiTestCase { ->with( $user ) ->willReturn( false ); - PopupsContextTestWrapper::injectTestInstance( $contextMock ); + $this->setService( 'Popups.Context', $contextMock ); $vars = []; diff --git a/tests/phpunit/UserPreferencesChangeHandlerTest.php b/tests/phpunit/UserPreferencesChangeHandlerTest.php index e3933591a..58af8bd62 100644 --- a/tests/phpunit/UserPreferencesChangeHandlerTest.php +++ b/tests/phpunit/UserPreferencesChangeHandlerTest.php @@ -18,7 +18,6 @@ * @file * @ingroup extensions */ -require_once 'PopupsContextTestWrapper.php'; use Popups\PopupsContext; use Popups\UserPreferencesChangeHandler; @@ -30,18 +29,13 @@ use Popups\UserPreferencesChangeHandler; */ class UserPreferencesChangeHandlerTest extends MediaWikiTestCase { - protected function tearDown() { - PopupsContextTestWrapper::resetTestInstance(); - parent::tearDown(); - } - /** * @covers ::handle * @covers ::__construct * @dataProvider provideDataForEventHandling */ public function testEventHandling( $oldOption, $newOption, $expectedMethodCallsCount ) { - $contextMock = $this->getMockBuilder( PopupsContextTestWrapper::class ) + $contextMock = $this->getMockBuilder( PopupsContexts::class ) ->disableOriginalConstructor() ->setMethods( [ 'logUserDisabledPagePreviewsEvent' ] ) ->getMock();