wiki.techinc.nl/tests/phpunit/includes/db/MWLBFactoryTest.php
Timo Tijhof 15fa9559a9 rdbms: Simplify MWLBFactory::getLBFactoryClass
* Convert to a single map.
* Simplify source code.
* Remove deprecation warning for something we're not likely to
  remove. This was embedded into LocalSettings.php files and
  should generally just keep working and is easy and cheap to do.
  Also note clear why one half warned and the other half didn't
  (because that's the one we happen to use in prod.)
* Simplify the tests. A lot of the boilerplate was no longer needed.
* Reduce abstraction in the test as was was not more complex
  than the source it tests.

Change-Id: If3e7e25dbf3bb408581fc16ac8e556b44b1855ad
2020-06-23 17:29:38 +01:00

89 lines
2.6 KiB
PHP

<?php
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
use Wikimedia\Rdbms\DatabaseDomain;
use Wikimedia\Rdbms\LBFactorySimple;
/**
* @group Database
* @covers \Wikimedia\Rdbms\LBFactory
* @covers \Wikimedia\Rdbms\LBFactorySimple
* @covers \Wikimedia\Rdbms\LBFactoryMulti
*/
class MWLBFactoryTest extends MediaWikiTestCase {
/**
* @covers MWLBFactory::getLBFactoryClass
* @dataProvider getLBFactoryClassProvider
*/
public function testGetLBFactoryClass( $config, $expected ) {
$this->assertEquals(
$expected,
MWLBFactory::getLBFactoryClass( $config )
);
}
public function getLBFactoryClassProvider() {
yield 'undercore alias default' => [
[ 'class' => 'LBFactory_Simple' ],
Wikimedia\Rdbms\LBFactorySimple::class,
];
yield 'short alias multi' => [
[ 'class' => 'LBFactoryMulti' ],
Wikimedia\Rdbms\LBFactoryMulti::class,
];
}
/**
* @covers MWLBFactory::setDomainAliases()
* @dataProvider setDomainAliasesProvider
*/
public function testDomainAliases( $dbname, $prefix, $expectedDomain ) {
$servers = [ [
'type' => 'sqlite',
'dbname' => 'defaultdb',
'tablePrefix' => 'defaultprefix_',
'dbDirectory' => '~/sqldatadir/',
'load' => 0,
] ];
$lbFactory = new LBFactorySimple( [
'servers' => $servers,
'localDomain' => new DatabaseDomain( $dbname, null, $prefix )
] );
MWLBFactory::setDomainAliases( $lbFactory );
$rawDomain = rtrim( "$dbname-$prefix", '-' );
$this->assertEquals(
$expectedDomain,
$lbFactory->resolveDomainID( $rawDomain ),
'Domain aliases set'
);
}
public function setDomainAliasesProvider() {
return [
[ 'enwiki', '', 'enwiki' ],
[ 'wikipedia', 'fr_', 'wikipedia-fr_' ],
[ 'wikipedia', 'zh', 'wikipedia-zh' ],
[ 'wiki-pedia', '', 'wiki?hpedia' ],
[ 'wiki-pedia', 'es_', 'wiki?hpedia-es_' ],
[ 'wiki-pedia', 'ru', 'wiki?hpedia-ru' ]
];
}
}