hookDispatcher = $this->getMockBuilder( '\SMW\MediaWiki\HookDispatcher' ) ->disableOriginalConstructor() ->getMock(); $this->permissionExaminer = $this->getMockBuilder( '\SMW\MediaWiki\Permission\PermissionExaminer' ) ->disableOriginalConstructor() ->getMock(); $this->schemaFactory = $this->getMockBuilder( '\SMW\Schema\SchemaFactory' ) ->disableOriginalConstructor() ->getMock(); } public function testCanConstruct() { $user = $this->getMockBuilder( '\MediaWiki\User\User' ) ->disableOriginalConstructor() ->getMock(); $preferences = []; $this->assertInstanceOf( GetPreferences::class, new GetPreferences( $this->permissionExaminer, $this->schemaFactory ) ); } /** * @dataProvider keyProvider */ public function testProcess( $key ) { $this->permissionExaminer->expects( $this->any() ) ->method( 'hasPermissionOf' ) ->willReturn( true ); $user = $this->getMockBuilder( '\MediaWiki\User\User' ) ->disableOriginalConstructor() ->getMock(); $preferences = []; $instance = new GetPreferences( $this->permissionExaminer, $this->schemaFactory ); $instance->setHookDispatcher( $this->hookDispatcher ); $instance->setOptions( [ 'smwgEnabledEditPageHelp' => false ] ); $instance->process( $user, $preferences ); $this->assertArrayHasKey( $key, $preferences ); } public function keyProvider() { $provider[] = [ 'smw-prefs-intro' ]; $provider[] = [ 'smw-prefs-ask-options-tooltip-display' ]; $provider[] = [ 'smw-prefs-general-options-time-correction' ]; $provider[] = [ 'smw-prefs-general-options-disable-editpage-info' ]; $provider[] = [ 'smw-prefs-general-options-jobqueue-watchlist' ]; return $provider; } }