$this->assertEquals( $wiki, WikiMap::getWikiFromUrl( $url ) );
}
+ public function provideGetWikiIdFromDomain() {
+ return [
+ [ 'db-prefix', 'db-prefix' ],
+ [ wfWikiID(), wfWikiID() ],
+ [ new DatabaseDomain( 'db-dash', null, 'prefix' ), 'db-dash-prefix' ],
+ [ wfWikiID(), wfWikiID() ],
+ [ new DatabaseDomain( 'db-dash', null, 'prefix' ), 'db-dash-prefix' ],
+ [ new DatabaseDomain( 'db', 'mediawiki', 'prefix' ), 'db-prefix' ], // schema ignored
+ [ new DatabaseDomain( 'db', 'custom', 'prefix' ), 'db-custom-prefix' ],
+ ];
+ }
+
/**
* @dataProvider provideGetWikiIdFromDomain
- * @covers WikiMap::getWikiIdFromDomain()
+ * @covers WikiMap::getWikiIdFromDbDomain()
*/
public function testGetWikiIdFromDomain( $domain, $wikiId ) {
- $this->assertEquals( $wikiId, WikiMap::getWikiIdFromDomain( $domain ) );
+ $this->assertEquals( $wikiId, WikiMap::getWikiIdFromDbDomain( $domain ) );
}
- public function provideGetWikiIdFromDomain() {
+ /**
+ * @covers WikiMap::isCurrentWikiDbDomain()
+ * @covers WikiMap::getCurrentWikiDbDomain()
+ */
+ public function testIsCurrentWikiDomain() {
+ $this->assertTrue( WikiMap::isCurrentWikiDbDomain( wfWikiID() ) );
+
+ $localDomain = DatabaseDomain::newFromId( wfWikiID() );
+ $domain1 = new DatabaseDomain(
+ $localDomain->getDatabase(), 'someschema', $localDomain->getTablePrefix() );
+ $domain2 = new DatabaseDomain(
+ $localDomain->getDatabase(), null, $localDomain->getTablePrefix() );
+
+ $this->assertTrue( WikiMap::isCurrentWikiDbDomain( $domain1 ), 'Schema ignored' );
+ $this->assertTrue( WikiMap::isCurrentWikiDbDomain( $domain2 ), 'Schema ignored' );
+
+ $this->assertTrue( WikiMap::isCurrentWikiDbDomain( WikiMap::getCurrentWikiDbDomain() ) );
+ }
+
+ public function provideIsCurrentWikiId() {
return [
- [ 'db-prefix', 'db-prefix' ],
- [ wfWikiID(), wfWikiID() ],
- [ new DatabaseDomain( 'db-dash', null, 'prefix' ), 'db-dash-prefix' ]
+ [ 'db', 'db', null, '' ],
+ [ 'db-schema-','db', 'schema', '' ],
+ [ 'db','db', 'mediawiki', '' ], // common b/c case
+ [ 'db-prefix', 'db', null, 'prefix' ],
+ [ 'db-schema-prefix', 'db', 'schema', 'prefix' ],
+ [ 'db-prefix', 'db', 'mediawiki', 'prefix' ], // common b/c case
+ // Bad hyphen cases (best effort support)
+ [ 'db-stuff', 'db-stuff', null, '' ],
+ [ 'db-stuff-prefix', 'db-stuff', null, 'prefix' ],
+ [ 'db-stuff-schema-', 'db-stuff', 'schema', '' ],
+ [ 'db-stuff-schema-prefix', 'db-stuff', 'schema', 'prefix' ],
+ [ 'db-stuff-prefix', 'db-stuff', 'mediawiki', 'prefix' ] // common b/c case
];
}
+
+ /**
+ * @dataProvider provideIsCurrentWikiId
+ * @covers WikiMap::isCurrentWikiId()
+ * @covers WikiMap::getCurrentWikiDbDomain()
+ * @covers WikiMap::getWikiIdFromDbDomain()
+ */
+ public function testIsCurrentWikiId( $wikiId, $db, $schema, $prefix ) {
+ $this->setMwGlobals(
+ [ 'wgDBname' => $db, 'wgDBmwschema' => $schema, 'wgDBprefix' => $prefix ] );
+
+ $this->assertTrue( WikiMap::isCurrentWikiId( $wikiId ), "ID matches" );
+ $this->assertNotTrue( WikiMap::isCurrentWikiId( $wikiId . '-more' ), "Bogus ID" );
+ }
}