2020-01-17 06:21:28 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use MediaWiki\Config\ServiceOptions;
|
2020-05-11 19:19:13 +00:00
|
|
|
use MediaWiki\User\DefaultOptionsLookup;
|
2020-01-17 06:21:28 +00:00
|
|
|
use MediaWiki\User\UserIdentity;
|
|
|
|
|
use MediaWiki\User\UserIdentityValue;
|
|
|
|
|
use MediaWiki\User\UserOptionsLookup;
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup
|
2020-01-17 06:21:28 +00:00
|
|
|
* @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, 0 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
abstract protected function getLookup(
|
|
|
|
|
string $langCode = 'qqq',
|
|
|
|
|
array $defaultOptionsOverrides = []
|
|
|
|
|
) : UserOptionsLookup;
|
|
|
|
|
|
|
|
|
|
protected function getDefaultManager(
|
|
|
|
|
string $langCode = 'qqq',
|
|
|
|
|
array $defaultOptionsOverrides = []
|
2020-05-11 19:19:13 +00:00
|
|
|
) : DefaultOptionsLookup {
|
2020-01-17 06:21:28 +00:00
|
|
|
$lang = $this->createMock( Language::class );
|
|
|
|
|
$lang->method( 'getCode' )->willReturn( $langCode );
|
2020-05-11 19:19:13 +00:00
|
|
|
return new DefaultOptionsLookup(
|
2020-01-17 06:21:28 +00:00
|
|
|
new ServiceOptions(
|
2020-05-11 19:19:13 +00:00
|
|
|
DefaultOptionsLookup::CONSTRUCTOR_OPTIONS,
|
2020-01-17 06:21:28 +00:00
|
|
|
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
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getDefaultOptions
|
2020-01-17 06:21:28 +00:00
|
|
|
* @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'] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getDefaultOption
|
2020-01-17 06:21:28 +00:00
|
|
|
* @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' ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOptions
|
2020-01-17 06:21:28 +00:00
|
|
|
* @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'] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOption
|
2020-01-17 06:21:28 +00:00
|
|
|
* @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' ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOption
|
2020-01-17 06:21:28 +00:00
|
|
|
* @covers MediaWiki\User\UserOptionsManager::getOption
|
|
|
|
|
*/
|
|
|
|
|
public function testGetOptionDefaultNotExist() {
|
|
|
|
|
$this->assertNull( $this->getLookup()
|
|
|
|
|
->getOption( $this->getAnon(), 'this_option_does_not_exist' ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-05-11 19:19:13 +00:00
|
|
|
* @covers MediaWiki\User\DefaultOptionsLookup::getOption
|
2020-01-17 06:21:28 +00:00
|
|
|
* @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' )
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|