Code that needs to store an actor ID in the database to represent a UserIdentity, or needs to construct a UserIdentity based on an actor ID loaded from the database, should use the ActorNormalization service. Note: The getActorId() method is removed from the UserIdentity interface, but all concrete classes continue to support it for now. UsererIdentityValue::getActorId() is hard deprecated and should be removed in 1.37. It always returns 0. User::getActorId() is not deprecated at this point. Bug: T274179 Depends-On: Id2b3ddf6a2a7cdf90f8936a69148d2cce6fde237 Change-Id: I9925906d11e47efaec3c1f48d5cb3f9896a982c1
140 lines
4.4 KiB
PHP
140 lines
4.4 KiB
PHP
<?php
|
|
|
|
use MediaWiki\Config\ServiceOptions;
|
|
use MediaWiki\MediaWikiServices;
|
|
use MediaWiki\User\DefaultOptionsLookup;
|
|
use MediaWiki\User\UserIdentity;
|
|
use MediaWiki\User\UserIdentityValue;
|
|
use MediaWiki\User\UserOptionsLookup;
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup
|
|
* @covers MediaWiki\User\UserOptionsManager
|
|
* @covers MediaWiki\User\UserOptionsLookup
|
|
*/
|
|
abstract class UserOptionsLookupTest extends MediaWikiIntegrationTestCase {
|
|
use MediaWikiCoversValidator;
|
|
|
|
protected function getAnon(
|
|
string $name = 'anon'
|
|
) : UserIdentity {
|
|
return new UserIdentityValue( 0, $name );
|
|
}
|
|
|
|
abstract protected function getLookup(
|
|
string $langCode = 'qqq',
|
|
array $defaultOptionsOverrides = []
|
|
) : UserOptionsLookup;
|
|
|
|
protected function getDefaultManager(
|
|
string $langCode = 'qqq',
|
|
array $defaultOptionsOverrides = []
|
|
) : DefaultOptionsLookup {
|
|
$lang = $this->createMock( Language::class );
|
|
$lang->method( 'getCode' )->willReturn( $langCode );
|
|
return new DefaultOptionsLookup(
|
|
new ServiceOptions(
|
|
DefaultOptionsLookup::CONSTRUCTOR_OPTIONS,
|
|
new HashConfig( [
|
|
'DefaultSkin' => 'test',
|
|
'DefaultUserOptions' => array_merge( [
|
|
'default_string_option' => 'string_value',
|
|
'default_int_option' => 1,
|
|
'default_bool_option' => true
|
|
], $defaultOptionsOverrides ),
|
|
'NamespacesToBeSearchedDefault' => [
|
|
NS_MAIN => true,
|
|
NS_TALK => true
|
|
]
|
|
] )
|
|
),
|
|
$lang,
|
|
MediaWikiServices::getInstance()->getHookContainer()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getDefaultOptions
|
|
* @covers MediaWiki\User\UserOptionsManager::getDefaultOptions
|
|
*/
|
|
public function testGetDefaultOptions() {
|
|
$options = $this->getLookup()->getDefaultOptions();
|
|
$this->assertSame( 'string_value', $options['default_string_option'] );
|
|
$this->assertSame( 1, $options['default_int_option'] );
|
|
$this->assertSame( true, $options['default_bool_option'] );
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getDefaultOption
|
|
* @covers MediaWiki\User\UserOptionsManager::getDefaultOption
|
|
*/
|
|
public function testGetDefaultOption() {
|
|
$manager = $this->getLookup();
|
|
$this->assertSame( 'string_value', $manager->getDefaultOption( 'default_string_option' ) );
|
|
$this->assertSame( 1, $manager->getDefaultOption( 'default_int_option' ) );
|
|
$this->assertSame( true, $manager->getDefaultOption( 'default_bool_option' ) );
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOptions
|
|
* @covers MediaWiki\User\UserOptionsManager::getOptions
|
|
*/
|
|
public function testGetOptions() {
|
|
$options = $this->getLookup()->getOptions( $this->getAnon() );
|
|
$this->assertSame( 'string_value', $options['default_string_option'] );
|
|
$this->assertSame( 1, $options['default_int_option'] );
|
|
$this->assertSame( true, $options['default_bool_option'] );
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOption
|
|
* @covers MediaWiki\User\UserOptionsManager::getOption
|
|
*/
|
|
public function testGetOptionDefault() {
|
|
$manager = $this->getLookup();
|
|
$this->assertSame( 'string_value',
|
|
$manager->getOption( $this->getAnon(), 'default_string_option' ) );
|
|
$this->assertSame( 1, $manager->getOption( $this->getAnon(), 'default_int_option' ) );
|
|
$this->assertSame( true, $manager->getOption( $this->getAnon(), 'default_bool_option' ) );
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOption
|
|
* @covers MediaWiki\User\UserOptionsManager::getOption
|
|
*/
|
|
public function testGetOptionDefaultNotExist() {
|
|
$this->assertNull( $this->getLookup()
|
|
->getOption( $this->getAnon(), 'this_option_does_not_exist' ) );
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOption
|
|
* @covers MediaWiki\User\UserOptionsManager::getOption
|
|
*/
|
|
public function testGetOptionDefaultNotExistDefaultOverride() {
|
|
$this->assertSame( 'override', $this->getLookup()
|
|
->getOption( $this->getAnon(), 'this_option_does_not_exist', 'override' ) );
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\UserOptionsLookup::getIntOption
|
|
*/
|
|
public function testGetIntOption() {
|
|
$this->assertSame(
|
|
2,
|
|
$this->getLookup( 'qqq', [ 'default_int_option' => '2' ] )
|
|
->getIntOption( $this->getAnon(), 'default_int_option' )
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers MediaWiki\User\UserOptionsLookup::getBoolOption
|
|
*/
|
|
public function testGetBoolOption() {
|
|
$this->assertSame(
|
|
true,
|
|
$this->getLookup( 'qqq', [ 'default_bool_option' => 'true' ] )
|
|
->getBoolOption( $this->getAnon(), 'default_bool_option' )
|
|
);
|
|
}
|
|
}
|