wiki.techinc.nl/tests/phpunit/includes/specials/SpecialPreferencesTest.php
James D. Forrester ad06527fb4 Reorg: Namespace the Title class
This is moderately messy.

Process was principally:

* xargs rg --files-with-matches '^use Title;' | grep 'php$' | \
  xargs -P 1 -n 1 sed -i -z 's/use Title;/use MediaWiki\\Title\\Title;/1'
* rg --files-without-match 'MediaWiki\\Title\\Title;' . | grep 'php$' | \
  xargs rg --files-with-matches 'Title\b' | \
  xargs -P 1 -n 1 sed -i -z 's/\nuse /\nuse MediaWiki\\Title\\Title;\nuse /1'
* composer fix

Then manual fix-ups for a few files that don't have any use statements.

Bug: T166010
Follows-Up: Ia5d8cb759dc3bc9e9bbe217d0fb109e2f8c4101a
Change-Id: If8fc9d0d95fc1a114021e282a706fc3e7da3524b
2023-03-02 08:46:53 -05:00

109 lines
2.7 KiB
PHP

<?php
/**
* Test class for SpecialPreferences class.
*
* Copyright © 2013, Antoine Musso
* Copyright © 2013, Wikimedia Foundation Inc.
*/
use MediaWiki\MainConfigNames;
use MediaWiki\MainConfigSchema;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Title\Title;
use MediaWiki\User\UserOptionsLookup;
/**
* @group Preferences
* @group Database
*
* @covers SpecialPreferences
*/
class SpecialPreferencesTest extends MediaWikiIntegrationTestCase {
/**
* Make sure a nickname which is longer than $wgMaxSigChars
* is not throwing a fatal error.
*
* Test specifications by Alexandre "ialex" Emsenhuber.
* @todo give this test a real name explaining what is being tested here
*/
public function testT43337() {
// Set a low limit
$this->overrideConfigValue( MainConfigNames::MaxSigChars, 2 );
$user = $this->createMock( User::class );
$user->method( 'getTitleKey' )
->willReturn( __CLASS__ );
$user->method( 'isAnon' )
->willReturn( false );
$user->method( 'isNamed' )
->willReturn( true );
# The mocked user has a long nickname
$userOptionsLookup = $this->createMock( UserOptionsLookup::class );
$userOptionsLookup->method( 'getOption' )
->willReturnMap( [
[
$user,
'nickname',
null,
false,
UserOptionsLookup::READ_NORMAL,
'superlongnickname'
],
[
$user,
'language',
null,
false,
UserOptionsLookup::READ_NORMAL,
MainConfigSchema::LanguageCode['default']
],
[
$user,
'skin',
null,
false,
UserOptionsLookup::READ_NORMAL,
MainConfigSchema::DefaultSkin['default']
],
[
$user,
'timecorrection',
null,
false,
UserOptionsLookup::READ_NORMAL,
"System|-420"
],
// MessageCache::getParserOptions() uses the main context
[
RequestContext::getMain()->getUser(),
'language',
null,
false,
UserOptionsLookup::READ_NORMAL,
MainConfigSchema::LanguageCode['default']
],
] );
$this->setService( 'UserOptionsLookup', $userOptionsLookup );
// isAnyAllowed used to return null from the mock,
// thus revoke it's permissions.
$this->overrideUserPermissions( $user, [] );
# Forge a request to call the special page
$context = new RequestContext();
$context->setRequest( new FauxRequest() );
$context->setUser( $user );
$context->setTitle( Title::makeTitle( NS_MAIN, 'Test' ) );
$services = $this->getServiceContainer();
# Do the call, should not spurt a fatal error.
$special = new SpecialPreferences(
$services->getPreferencesFactory(),
$services->getUserOptionsManager()
);
$special->setContext( $context );
$this->assertNull( $special->execute( [] ) );
}
}