use MediaWiki\Auth\AuthManager;
use MediaWiki\MediaWikiServices;
use MediaWiki\Preferences\DefaultPreferencesFactory;
-use Wikimedia\ObjectFactory;
use Wikimedia\TestingAccessWrapper;
/**
/**
* @group Preferences
*/
-class DefaultPreferencesFactoryTest extends MediaWikiTestCase {
+class DefaultPreferencesFactoryTest extends \MediaWikiTestCase {
/** @var IContextSource */
protected $context;
public function setUp() {
parent::setUp();
- global $wgParserConf;
$this->context = new RequestContext();
$this->context->setTitle( Title::newFromText( self::class ) );
- $this->setMwGlobals( 'wgParser',
- ObjectFactory::constructClassInstance( $wgParserConf['class'], [ $wgParserConf ] )
- );
- $this->config = MediaWikiServices::getInstance()->getMainConfig();
+
+ $services = MediaWikiServices::getInstance();
+
+ $this->setMwGlobals( 'wgParser', $services->getParserFactory()->create() );
+ $this->config = $services->getMainConfig();
}
/**
* @covers MediaWiki\Preferences\DefaultPreferencesFactory::getForm()
*/
public function testGetForm() {
+ $this->setTemporaryHook( 'GetPreferences', null );
+
$testUser = $this->getTestUser();
$form = $this->getPreferencesFactory()->getForm( $testUser->getUser(), $this->context );
- $this->assertInstanceOf( PreferencesFormLegacy::class, $form );
+ $this->assertInstanceOf( PreferencesFormOOUI::class, $form );
$this->assertCount( 5, $form->getPreferenceSections() );
}
$this->assertEquals( $cssClass, $prefs['emailauthentication']['cssclass'] );
}
+ /**
+ * @covers MediaWiki\Preferences\DefaultPreferencesFactory::renderingPreferences()
+ */
+ public function testShowRollbackConfIsHiddenForUsersWithoutRollbackRights() {
+ $userMock = $this->getMockBuilder( User::class )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $userMock->method( 'isAllowed' )
+ ->willReturn( false );
+ $userMock->method( 'getEffectiveGroups' )
+ ->willReturn( [] );
+ $userMock->method( 'getGroupMemberships' )
+ ->willReturn( [] );
+ $userMock->method( 'getOptions' )
+ ->willReturn( [ 'test' => 'yes' ] );
+
+ $prefs = $this->getPreferencesFactory()->getFormDescriptor( $userMock, $this->context );
+ $this->assertArrayNotHasKey( 'showrollbackconfirmation', $prefs );
+ }
+
+ /**
+ * @covers MediaWiki\Preferences\DefaultPreferencesFactory::renderingPreferences()
+ */
+ public function testShowRollbackConfIsShownForUsersWithRollbackRights() {
+ $userMock = $this->getMockBuilder( User::class )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $userMock->method( 'isAllowed' )
+ ->willReturn( true );
+ $userMock->method( 'getEffectiveGroups' )
+ ->willReturn( [] );
+ $userMock->method( 'getGroupMemberships' )
+ ->willReturn( [] );
+ $userMock->method( 'getOptions' )
+ ->willReturn( [ 'test' => 'yes' ] );
+
+ $prefs = $this->getPreferencesFactory()->getFormDescriptor( $userMock, $this->context );
+ $this->assertArrayHasKey( 'showrollbackconfirmation', $prefs );
+ $this->assertEquals(
+ 'rendering/advancedrendering',
+ $prefs['showrollbackconfirmation']['section']
+ );
+ }
+
public function emailAuthenticationProvider() {
$userNoEmail = new User;
$userEmailUnauthed = new User;
$configMock = new HashConfig( [
'HiddenPrefs' => []
] );
- $form = $this->getMockBuilder( PreferencesFormLegacy::class )
+ $form = $this->getMockBuilder( PreferencesFormOOUI::class )
->disableOriginalConstructor()
->getMock();
}
);
+ /** @var DefaultPreferencesFactory $factory */
$factory = TestingAccessWrapper::newFromObject( $this->getPreferencesFactory() );
- $factory->saveFormData( $newOptions, $form );
+ $factory->saveFormData( $newOptions, $form, [] );
}
/**