MediaWiki REL1_31
LocalisationCacheTest.php
Go to the documentation of this file.
1<?php
9 protected function setUp() {
10 parent::setUp();
11 $this->setMwGlobals( [
12 'wgExtensionMessagesFiles' => [],
13 'wgHooks' => [],
14 ] );
15 }
16
20 protected function getMockLocalisationCache() {
21 global $IP;
22 $lc = $this->getMockBuilder( \LocalisationCache::class )
23 ->setConstructorArgs( [ [ 'store' => 'detect' ] ] )
24 ->setMethods( [ 'getMessagesDirs' ] )
25 ->getMock();
26 $lc->expects( $this->any() )->method( 'getMessagesDirs' )
27 ->will( $this->returnValue(
28 [ "$IP/tests/phpunit/data/localisationcache" ]
29 ) );
30
31 return $lc;
32 }
33
34 public function testPuralRulesFallback() {
36
37 $this->assertEquals(
38 $cache->getItem( 'ar', 'pluralRules' ),
39 $cache->getItem( 'arz', 'pluralRules' ),
40 'arz plural rules (undefined) fallback to ar (defined)'
41 );
42
43 $this->assertEquals(
44 $cache->getItem( 'ar', 'compiledPluralRules' ),
45 $cache->getItem( 'arz', 'compiledPluralRules' ),
46 'arz compiled plural rules (undefined) fallback to ar (defined)'
47 );
48
49 $this->assertNotEquals(
50 $cache->getItem( 'ksh', 'pluralRules' ),
51 $cache->getItem( 'de', 'pluralRules' ),
52 'ksh plural rules (defined) dont fallback to de (defined)'
53 );
54
55 $this->assertNotEquals(
56 $cache->getItem( 'ksh', 'compiledPluralRules' ),
57 $cache->getItem( 'de', 'compiledPluralRules' ),
58 'ksh compiled plural rules (defined) dont fallback to de (defined)'
59 );
60 }
61
62 public function testRecacheFallbacks() {
63 $lc = $this->getMockLocalisationCache();
64 $lc->recache( 'ba' );
65 $this->assertEquals(
66 [
67 'present-ba' => 'ba',
68 'present-ru' => 'ru',
69 'present-en' => 'en',
70 ],
71 $lc->getItem( 'ba', 'messages' ),
72 'Fallbacks are only used to fill missing data'
73 );
74 }
75
77 // Use hook to provide updates for messages. This is what the
78 // LocalisationUpdate extension does. See T70781.
79 $this->mergeMwGlobalArrayValue( 'wgHooks', [
80 'LocalisationCacheRecacheFallback' => [
81 function (
83 $code,
84 array &$cache
85 ) {
86 if ( $code === 'ru' ) {
87 $cache['messages']['present-ba'] = 'ru-override';
88 $cache['messages']['present-ru'] = 'ru-override';
89 $cache['messages']['present-en'] = 'ru-override';
90 }
91 }
92 ]
93 ] );
94
95 $lc = $this->getMockLocalisationCache();
96 $lc->recache( 'ba' );
97 $this->assertEquals(
98 [
99 'present-ba' => 'ba',
100 'present-ru' => 'ru-override',
101 'present-en' => 'ru-override',
102 ],
103 $lc->getItem( 'ba', 'messages' ),
104 'Updates provided by hooks follow the normal fallback order.'
105 );
106 }
107}
they could even be mouse clicks or menu items whatever suits your program You should also get your if any
Definition COPYING.txt:326
Database Cache LocalisationCache.
Class for caching the contents of localisation files, Messages*.php and *.i18n.php.
recache( $code)
Load localisation data for a given language for both core and extensions and save it to the persisten...
getItem( $code, $key)
Get a cache item.
mergeMwGlobalArrayValue( $name, $values)
Merges the given values into a MW global array variable.
setMwGlobals( $pairs, $value=null)
Sets a global, maintaining a stashed version of the previous global to be restored in tearDown.
this hook is for auditing only or null if authentication failed before getting that far or null if we can t even determine that probably a stub it is not rendered in wiki pages or galleries in category pages allow injecting custom HTML after the section Any uses of the hook need to handle escaping see BaseTemplate::getToolbox and BaseTemplate::makeListItem for details on the format of individual items inside of this array or by returning and letting standard HTTP rendering take place modifiable or by returning false and taking over the output modifiable & $code
Definition hooks.txt:865
$IP
Definition update.php:3
$cache
Definition mcc.php:33