164c32477a07bffc73ccdf84d338fc77e3ba91f2
3 class SiteConfigurationTest
extends MediaWikiTestCase
{
6 * @var SiteConfiguration
10 protected function setUp() {
13 $this->mConf
= new SiteConfiguration
;
15 $this->mConf
->suffixes
= [ 'wikipedia' => 'wiki' ];
16 $this->mConf
->wikis
= [ 'enwiki', 'dewiki', 'frwiki' ];
17 $this->mConf
->settings
= [
27 'default' => 'default',
33 'default' => '$lang $site $wiki',
62 'default' => 'default',
76 $GLOBALS['SomeGlobal'] = [ 'SomeGlobal' => 'SomeGlobal' ];
80 * This function is used as a callback within the tests below
82 public static function getSiteParamsCallback( $conf, $wiki ) {
85 foreach ( $conf->suffixes
as $suffix ) {
86 if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
88 $lang = substr( $wiki, 0, -strlen( $suffix ) );
106 * @covers SiteConfiguration::siteFromDB
108 public function testSiteFromDb() {
110 [ 'wikipedia', 'en' ],
111 $this->mConf
->siteFromDB( 'enwiki' ),
116 $this->mConf
->siteFromDB( 'wiki' ),
117 'siteFromDB() on a suffix'
121 $this->mConf
->siteFromDB( 'wikien' ),
122 'siteFromDB() on a non-existing wiki'
125 $this->mConf
->suffixes
= [ 'wiki', '' ];
128 $this->mConf
->siteFromDB( 'wikien' ),
129 'siteFromDB() on a non-existing wiki (2)'
134 * @covers SiteConfiguration::getLocalDatabases
136 public function testGetLocalDatabases() {
138 [ 'enwiki', 'dewiki', 'frwiki' ],
139 $this->mConf
->getLocalDatabases(),
140 'getLocalDatabases()'
145 * @covers SiteConfiguration::get
147 public function testGetConfVariables() {
151 $this->mConf
->get( 'SimpleKey', 'enwiki', 'wiki' ),
152 'get(): simple setting on an existing wiki'
156 $this->mConf
->get( 'SimpleKey', 'dewiki', 'wiki' ),
157 'get(): simple setting on an existing wiki (2)'
161 $this->mConf
->get( 'SimpleKey', 'frwiki', 'wiki' ),
162 'get(): simple setting on an existing wiki (3)'
166 $this->mConf
->get( 'SimpleKey', 'wiki', 'wiki' ),
167 'get(): simple setting on an suffix'
171 $this->mConf
->get( 'SimpleKey', 'eswiki', 'wiki' ),
172 'get(): simple setting on an non-existing wiki'
178 $this->mConf
->get( 'Fallback', 'enwiki', 'wiki' ),
179 'get(): fallback setting on an existing wiki'
183 $this->mConf
->get( 'Fallback', 'dewiki', 'wiki', [], [ 'tag' ] ),
184 'get(): fallback setting on an existing wiki (with wiki tag)'
188 $this->mConf
->get( 'Fallback', 'wiki', 'wiki' ),
189 'get(): fallback setting on an suffix'
193 $this->mConf
->get( 'Fallback', 'wiki', 'wiki', [], [ 'tag' ] ),
194 'get(): fallback setting on an suffix (with wiki tag)'
198 $this->mConf
->get( 'Fallback', 'eswiki', 'wiki' ),
199 'get(): fallback setting on an non-existing wiki'
203 $this->mConf
->get( 'Fallback', 'eswiki', 'wiki', [], [ 'tag' ] ),
204 'get(): fallback setting on an non-existing wiki (with wiki tag)'
208 $common = [ 'wiki' => 'wiki', 'default' => 'default' ];
209 $commonTag = [ 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ];
211 [ 'enwiki' => 'enwiki' ] +
$common,
212 $this->mConf
->get( 'MergeIt', 'enwiki', 'wiki' ),
213 'get(): merging setting on an existing wiki'
216 [ 'enwiki' => 'enwiki' ] +
$commonTag,
217 $this->mConf
->get( 'MergeIt', 'enwiki', 'wiki', [], [ 'tag' ] ),
218 'get(): merging setting on an existing wiki (with tag)'
221 [ 'dewiki' => 'dewiki' ] +
$common,
222 $this->mConf
->get( 'MergeIt', 'dewiki', 'wiki' ),
223 'get(): merging setting on an existing wiki (2)'
226 [ 'dewiki' => 'dewiki' ] +
$commonTag,
227 $this->mConf
->get( 'MergeIt', 'dewiki', 'wiki', [], [ 'tag' ] ),
228 'get(): merging setting on an existing wiki (2) (with tag)'
231 [ 'frwiki' => 'frwiki' ] +
$common,
232 $this->mConf
->get( 'MergeIt', 'frwiki', 'wiki' ),
233 'get(): merging setting on an existing wiki (3)'
236 [ 'frwiki' => 'frwiki' ] +
$commonTag,
237 $this->mConf
->get( 'MergeIt', 'frwiki', 'wiki', [], [ 'tag' ] ),
238 'get(): merging setting on an existing wiki (3) (with tag)'
241 [ 'wiki' => 'wiki' ] +
$common,
242 $this->mConf
->get( 'MergeIt', 'wiki', 'wiki' ),
243 'get(): merging setting on an suffix'
246 [ 'wiki' => 'wiki' ] +
$commonTag,
247 $this->mConf
->get( 'MergeIt', 'wiki', 'wiki', [], [ 'tag' ] ),
248 'get(): merging setting on an suffix (with tag)'
252 $this->mConf
->get( 'MergeIt', 'eswiki', 'wiki' ),
253 'get(): merging setting on an non-existing wiki'
257 $this->mConf
->get( 'MergeIt', 'eswiki', 'wiki', [], [ 'tag' ] ),
258 'get(): merging setting on an non-existing wiki (with tag)'
263 * @covers SiteConfiguration::siteFromDB
265 public function testSiteFromDbWithCallback() {
266 $this->mConf
->siteParamsCallback
= 'SiteConfigurationTest::getSiteParamsCallback';
270 $this->mConf
->siteFromDB( 'enwiki' ),
271 'siteFromDB() with callback'
275 $this->mConf
->siteFromDB( 'wiki' ),
276 'siteFromDB() with callback on a suffix'
280 $this->mConf
->siteFromDB( 'wikien' ),
281 'siteFromDB() with callback on a non-existing wiki'
286 * @covers SiteConfiguration::get
288 public function testParameterReplacement() {
289 $this->mConf
->siteParamsCallback
= 'SiteConfigurationTest::getSiteParamsCallback';
293 $this->mConf
->get( 'WithParams', 'enwiki', 'wiki' ),
294 'get(): parameter replacement on an existing wiki'
298 $this->mConf
->get( 'WithParams', 'dewiki', 'wiki' ),
299 'get(): parameter replacement on an existing wiki (2)'
303 $this->mConf
->get( 'WithParams', 'frwiki', 'wiki' ),
304 'get(): parameter replacement on an existing wiki (3)'
308 $this->mConf
->get( 'WithParams', 'wiki', 'wiki' ),
309 'get(): parameter replacement on an suffix'
313 $this->mConf
->get( 'WithParams', 'eswiki', 'wiki' ),
314 'get(): parameter replacement on an non-existing wiki'
319 * @covers SiteConfiguration::getAll
321 public function testGetAllGlobals() {
322 $this->mConf
->siteParamsCallback
= 'SiteConfigurationTest::getSiteParamsCallback';
325 'SimpleKey' => 'enwiki',
327 'WithParams' => 'en wiki enwiki',
328 'SomeGlobal' => [ 'enwiki' => 'enwiki' ] +
$GLOBALS['SomeGlobal'],
330 'enwiki' => 'enwiki',
333 'default' => 'default'
336 $this->assertEquals( $getall, $this->mConf
->getAll( 'enwiki' ), 'getAll()' );
338 $this->mConf
->extractAllGlobals( 'enwiki', 'wiki' );
341 $getall['SimpleKey'],
342 $GLOBALS['SimpleKey'],
343 'extractAllGlobals(): simple setting'
347 $GLOBALS['Fallback'],
348 'extractAllGlobals(): fallback setting'
351 $getall['WithParams'],
352 $GLOBALS['WithParams'],
353 'extractAllGlobals(): parameter replacement'
356 $getall['SomeGlobal'],
357 $GLOBALS['SomeGlobal'],
358 'extractAllGlobals(): merging with global'
363 'extractAllGlobals(): merging setting'