wiki.techinc.nl/tests/phpunit/integration/includes/user/Options/UserOptionsLookupTest.php
Martin Urbanec 29af4dd074 Move user options related classes into its own namespace
There are a couple of user options related classes already,
and the T321527 work on dynamic defaults is going to add
even more. Let's move them into a separate namespace
to make core a bit more organized.

Old name is kept as an alias for compatibility purposes.

Bug: T321527
Bug: T352284
Change-Id: I9822eb1553870b876d0b8a927e4e86c27d83bd52
2023-11-29 13:27:13 +01:00

143 lines
4.7 KiB
PHP

<?php
use MediaWiki\Config\HashConfig;
use MediaWiki\Config\ServiceOptions;
use MediaWiki\MainConfigNames;
use MediaWiki\User\Options\DefaultOptionsLookup;
use MediaWiki\User\Options\UserOptionsLookup;
use MediaWiki\User\UserIdentity;
use MediaWiki\User\UserIdentityValue;
/**
* @covers MediaWiki\User\Options\DefaultOptionsLookup
* @covers MediaWiki\User\Options\UserOptionsManager
* @covers MediaWiki\User\Options\UserOptionsLookup
*/
abstract class UserOptionsLookupTest extends MediaWikiIntegrationTestCase {
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( [
MainConfigNames::DefaultSkin => 'test',
MainConfigNames::DefaultUserOptions => array_merge( [
'default_string_option' => 'string_value',
'default_int_option' => 1,
'default_bool_option' => true
], $defaultOptionsOverrides ),
MainConfigNames::NamespacesToBeSearchedDefault => [
NS_MAIN => true,
NS_TALK => true,
NS_MEDIAWIKI => false,
]
] )
),
$lang,
$this->getServiceContainer()->getHookContainer(),
$this->getServiceContainer()->getNamespaceInfo(),
!$this->needsDB()
);
}
/**
* @covers MediaWiki\User\Options\DefaultOptionsLookup::getDefaultOptions
* @covers MediaWiki\User\Options\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\Options\DefaultOptionsLookup::getDefaultOption
* @covers MediaWiki\User\Options\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\Options\DefaultOptionsLookup::getOptions
* @covers MediaWiki\User\Options\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\Options\DefaultOptionsLookup::getOption
* @covers MediaWiki\User\Options\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\Options\DefaultOptionsLookup::getOption
* @covers MediaWiki\User\Options\UserOptionsManager::getOption
*/
public function testGetOptionDefaultNotExist() {
$this->assertNull( $this->getLookup()
->getOption( $this->getAnon(), 'this_option_does_not_exist' ) );
}
/**
* @covers MediaWiki\User\Options\DefaultOptionsLookup::getOption
* @covers MediaWiki\User\Options\UserOptionsManager::getOption
*/
public function testGetOptionDefaultNotExistDefaultOverride() {
$this->assertSame( 'override', $this->getLookup()
->getOption( $this->getAnon(), 'this_option_does_not_exist', 'override' ) );
}
/**
* @covers MediaWiki\User\Options\UserOptionsLookup::getIntOption
*/
public function testGetIntOption() {
$this->assertSame(
2,
$this->getLookup( 'qqq', [ 'default_int_option' => '2' ] )
->getIntOption( $this->getAnon(), 'default_int_option' )
);
}
/**
* @covers MediaWiki\User\Options\UserOptionsLookup::getBoolOption
*/
public function testGetBoolOption() {
$this->assertSame(
true,
$this->getLookup( 'qqq', [ 'default_bool_option' => 'true' ] )
->getBoolOption( $this->getAnon(), 'default_bool_option' )
);
}
}