. * * @file * @ingroup extensions */ use Popups\PopupsContext; use Popups\UserPreferencesChangeHandler; /** * @group Popups * @coversDefaultClass \Popups\UserPreferencesChangeHandler */ class UserPreferencesChangeHandlerTest extends MediaWikiUnitTestCase { /** * @covers ::doPreferencesFormPreSave * @covers ::__construct * @dataProvider provideDataForEventHandling */ public function testEventHandling( $oldOption, $newOption, $expectedMethodCallsCount ) { $contextMock = $this->createMock( PopupsContext::class ); $contextMock->expects( $expectedMethodCallsCount ) ->method( 'logUserDisabledPagePreviewsEvent' ); $user = $this->createMock( User::class ); $user->method( 'getBoolOption' ) ->willReturn( $newOption ); /** @var User $user */ $oldOptions = [ PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME => $oldOption ]; $listener = new UserPreferencesChangeHandler( $contextMock ); $listener->doPreferencesFormPreSave( $user, $oldOptions ); } public function provideDataForEventHandling() { return [ [ PopupsContext::PREVIEWS_DISABLED, PopupsContext::PREVIEWS_DISABLED, $this->never() ], [ PopupsContext::PREVIEWS_ENABLED, PopupsContext::PREVIEWS_ENABLED, $this->never() ], [ PopupsContext::PREVIEWS_DISABLED, PopupsContext::PREVIEWS_ENABLED, $this->never() ], [ PopupsContext::PREVIEWS_ENABLED, PopupsContext::PREVIEWS_DISABLED, $this->once() ] ]; } }