12 $dbw->delete(
'interwiki',
'*', __METHOD__ );
13 $dbw->insert(
'interwiki', array_values( $iwrows ), __METHOD__ );
14 $this->tablesUsed[] =
'interwiki';
22 'iw_url' =>
'http://de.wikipedia.org/wiki/',
23 'iw_api' =>
'http://de.wikipedia.org/w/api.php',
24 'iw_wikiid' =>
'dewiki',
31 'iw_url' =>
'http://zzwiki.org/wiki/',
32 'iw_api' =>
'http://zzwiki.org/w/api.php',
33 'iw_wikiid' =>
'zzwiki',
39 $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
50 $lookup->getAllPrefixes(),
55 $lookup->getAllPrefixes(
true ),
60 $lookup->getAllPrefixes(
false ),
64 $this->assertTrue( $lookup->isValidInterwiki(
'de' ),
'known prefix is valid' );
65 $this->assertFalse( $lookup->isValidInterwiki(
'xyz' ),
'unknown prefix is valid' );
67 $this->assertNull( $lookup->fetch(
null ),
'no prefix' );
68 $this->assertFalse( $lookup->fetch(
'xyz' ),
'unknown prefix' );
70 $interwiki = $lookup->fetch(
'de' );
72 $this->assertSame( $interwiki, $lookup->fetch(
'de' ),
'in-process caching' );
74 $this->assertSame(
'http://de.wikipedia.org/wiki/', $interwiki->getURL(),
'getURL' );
75 $this->assertSame(
'http://de.wikipedia.org/w/api.php', $interwiki->getAPI(),
'getAPI' );
76 $this->assertSame(
'dewiki', $interwiki->getWikiID(),
'getWikiID' );
77 $this->assertSame(
true, $interwiki->isLocal(),
'isLocal' );
78 $this->assertSame(
false, $interwiki->isTranscludable(),
'isTranscludable' );
80 $lookup->invalidateCache(
'de' );
81 $this->assertNotSame( $interwiki, $lookup->fetch(
'de' ),
'invalidate cache' );
93 $hash[
'__sites:' .
wfWikiID() ] = $thisSite;
98 foreach ( $local
as $row ) {
99 $prefix = $row[
'iw_prefix'];
100 $data = $row[
'iw_local'] .
' ' . $row[
'iw_url'];
102 $hash[
"_{$thisSite}:{$prefix}" ] = $data;
105 foreach ( $global
as $row ) {
106 $prefix = $row[
'iw_prefix'];
107 $data = $row[
'iw_local'] .
' ' . $row[
'iw_url'];
108 $globals[] = $prefix;
109 $hash[
"__global:{$prefix}" ] = $data;
112 $hash[
'__list:__global' ] = implode(
' ', $globals );
113 $hash[
'__list:_' . $thisSite ] = implode(
' ', $locals );
119 $cdbFile = tempnam(
wfTempDir(),
'MW-ClassicInterwikiLookupTest-' ) .
'.cdb';
122 $hash = $this->
populateHash( $thisSite, $local, $global );
124 foreach ( $hash
as $key =>
$value ) {
125 $cdb->set( $key,
$value );
138 'iw_url' =>
'http://zzwiki.org/wiki/',
144 'iw_url' =>
'http://de.wikipedia.org/wiki/',
153 $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
163 [ $zzwiki, $dewiki ],
164 $lookup->getAllPrefixes(),
168 $this->assertTrue( $lookup->isValidInterwiki(
'de' ),
'known prefix is valid' );
169 $this->assertTrue( $lookup->isValidInterwiki(
'zz' ),
'known prefix is valid' );
171 $interwiki = $lookup->fetch(
'de' );
174 $this->assertSame(
'http://de.wikipedia.org/wiki/', $interwiki->getURL(),
'getURL' );
175 $this->assertSame(
true, $interwiki->isLocal(),
'isLocal' );
177 $interwiki = $lookup->fetch(
'zz' );
180 $this->assertSame(
'http://zzwiki.org/wiki/', $interwiki->getURL(),
'getURL' );
181 $this->assertSame(
false, $interwiki->isLocal(),
'isLocal' );
190 'iw_url' =>
'http://zzwiki.org/wiki/',
195 'iw_url' =>
'http://de.wikipedia.org/wiki/',
204 $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
214 [ $zzwiki, $dewiki ],
215 $lookup->getAllPrefixes(),
219 $this->assertTrue( $lookup->isValidInterwiki(
'de' ),
'known prefix is valid' );
220 $this->assertTrue( $lookup->isValidInterwiki(
'zz' ),
'known prefix is valid' );
222 $interwiki = $lookup->fetch(
'de' );
225 $this->assertSame(
'http://de.wikipedia.org/wiki/', $interwiki->getURL(),
'getURL' );
226 $this->assertSame(
true, $interwiki->isLocal(),
'isLocal' );
228 $interwiki = $lookup->fetch(
'zz' );
231 $this->assertSame(
'http://zzwiki.org/wiki/', $interwiki->getURL(),
'getURL' );
232 $this->assertSame(
false, $interwiki->isLocal(),
'isLocal' );
238 'iw_url' =>
'https://azz.example.org/',
243 'iw_url' =>
'https://de.example.org/',
247 'iw_prefix' =>
'azz',
248 'iw_url' =>
'https://azz.example.org/',
257 $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
268 $lookup->getAllPrefixes(),
269 'getAllPrefixes() - preserves order'