X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FWikiMapTest.php;h=53e0b10b880419a084aa7c904a2cf6dd28447fbe;hp=12878b37ed26257021a8ce284897adc11d2ec13b;hb=7065200b036d4bbf0c46f4b236d761a79b57215e;hpb=239659fe4ce2f3e9872d9bc1b3f7b3ffcbfa7fb3 diff --git a/tests/phpunit/includes/WikiMapTest.php b/tests/phpunit/includes/WikiMapTest.php index 12878b37ed..53e0b10b88 100644 --- a/tests/phpunit/includes/WikiMapTest.php +++ b/tests/phpunit/includes/WikiMapTest.php @@ -1,4 +1,5 @@ 'http://en.example.org', 'ruwiki' => '//ru.example.org', 'nopathwiki' => '//nopath.example.org', + 'thiswiki' => '//this.wiki.org' ], 'wgArticlePath' => [ 'enwiki' => '/w/$1', @@ -25,6 +27,10 @@ class WikiMapTest extends MediaWikiLangTestCase { $conf->suffixes = [ 'wiki' ]; $this->setMwGlobals( [ 'wgConf' => $conf, + 'wgLocalDatabases' => [ 'enwiki', 'ruwiki', 'nopathwiki' ], + 'wgCanonicalServer' => '//this.wiki.org', + 'wgDBname' => 'thiswiki', + 'wgDBprefix' => '' ] ); TestSites::insertIntoDb(); @@ -175,4 +181,73 @@ class WikiMapTest extends MediaWikiLangTestCase { $this->assertEquals( $expected, WikiMap::getForeignURL( $wikiId, $page, $fragment ) ); } + /** + * @covers WikiMap::getCanonicalServerInfoForAllWikis() + */ + public function testGetCanonicalServerInfoForAllWikis() { + $expected = [ + 'thiswiki' => [ + 'url' => '//this.wiki.org', + 'parts' => [ 'scheme' => '', 'host' => 'this.wiki.org', 'delimiter' => '//' ] + ], + 'enwiki' => [ + 'url' => 'http://en.example.org', + 'parts' => [ + 'scheme' => 'http', 'host' => 'en.example.org', 'delimiter' => '://' ] + ], + 'ruwiki' => [ + 'url' => '//ru.example.org', + 'parts' => [ 'scheme' => '', 'host' => 'ru.example.org', 'delimiter' => '//' ] + ] + ]; + + $this->assertArrayEquals( + $expected, + WikiMap::getCanonicalServerInfoForAllWikis(), + true, + true + ); + } + + public function provideGetWikiFromUrl() { + return [ + [ 'http://this.wiki.org', 'thiswiki' ], + [ 'https://this.wiki.org', 'thiswiki' ], + [ 'http://this.wiki.org/$1', 'thiswiki' ], + [ 'https://this.wiki.org/$2', 'thiswiki' ], + [ 'http://en.example.org', 'enwiki' ], + [ 'https://en.example.org', 'enwiki' ], + [ 'http://en.example.org/$1', 'enwiki' ], + [ 'https://en.example.org/$2', 'enwiki' ], + [ 'http://ru.example.org', 'ruwiki' ], + [ 'https://ru.example.org', 'ruwiki' ], + [ 'http://ru.example.org/$1', 'ruwiki' ], + [ 'https://ru.example.org/$2', 'ruwiki' ], + [ 'http://not.defined.org', false ] + ]; + } + + /** + * @dataProvider provideGetWikiFromUrl + * @covers WikiMap::getWikiFromUrl() + */ + public function testGetWikiFromUrl( $url, $wiki ) { + $this->assertEquals( $wiki, WikiMap::getWikiFromUrl( $url ) ); + } + + /** + * @dataProvider provideGetWikiIdFromDomain + * @covers WikiMap::getWikiIdFromDomain() + */ + public function testGetWikiIdFromDomain( $domain, $wikiId ) { + $this->assertEquals( $wikiId, WikiMap::getWikiIdFromDomain( $domain ) ); + } + + public function provideGetWikiIdFromDomain() { + return [ + [ 'db-prefix', 'db-prefix' ], + [ wfWikiID(), wfWikiID() ], + [ new DatabaseDomain( 'db-dash', null, 'prefix' ), 'db-dash-prefix' ] + ]; + } }