Fix the LanguageConverterTest to prevent test failures after the changes made on...
[lhc/web/wiklou.git] / maintenance / tests / phpunit / includes / LanguageConverterTest.php
1 <?php
2
3 class LanguageConverterTest extends PHPUnit_Framework_TestCase {
4 protected $lang = null;
5 protected $lc = null;
6
7 function setUp() {
8 global $wgMemc, $wgRequest, $wgUser, $wgContLang;
9
10 $wgUser = new User;
11 $wgRequest = new FauxRequest( array() );
12 $wgMemc = new FakeMemCachedClient;
13 $wgContLang = Language::factory( 'tg' );
14 $this->lang = new LanguageTest();
15 $this->lc = new TestConverter( $this->lang, 'tg',
16 array( 'tg', 'tg-latn' ) );
17 }
18
19 function tearDown() {
20 global $wgMemc, $wgContLang;
21 unset( $wgMemc );
22 unset( $this->lc );
23 unset( $this->lang );
24 $wgContLang = null;
25 }
26
27 function testGetPreferredVariantDefaults() {
28 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
29 }
30
31 function testGetPreferredVariantHeaders() {
32 global $wgRequest;
33 $wgRequest->setHeader( 'Accept-Language', 'tg-latn' );
34
35 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
36 }
37
38 function testGetPreferredVariantHeaderWeight() {
39 global $wgRequest;
40 $wgRequest->setHeader( 'Accept-Language', 'tg;q=1' );
41
42 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
43 }
44
45 function testGetPreferredVariantHeaderWeight2() {
46 global $wgRequest;
47 $wgRequest->setHeader( 'Accept-Language', 'tg-latn;q=1' );
48
49 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
50 }
51
52 function testGetPreferredVariantHeaderMulti() {
53 global $wgRequest;
54 $wgRequest->setHeader( 'Accept-Language', 'en, tg-latn;q=1' );
55
56 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
57 }
58
59 function testGetPreferredVariantUserOption() {
60 global $wgUser;
61
62 $wgUser = new User;
63 $wgUser->setId( 1 );
64 $wgUser->mDataLoaded = true;
65 $wgUser->setOption( 'variant', 'tg-latn' );
66
67 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
68 }
69
70 function testGetPreferredVariantHeaderUserVsUrl() {
71 global $wgRequest, $wgUser, $wgContLang;
72
73 $wgContLang = Language::factory( 'tg-latn' );
74 $wgRequest->setVal( 'variant', 'tg' );
75 $wgUser = User::newFromId( "admin" );
76 $wgUser->setId( 1 );
77 $wgUser->setOption( 'variant', 'tg-latn' ); // The user's data is ignored
78 // because the variant is set in the URL.
79 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
80 }
81
82
83 function testGetPreferredVariantDefaultLanguageVariant() {
84 global $wgDefaultLanguageVariant;
85
86 $wgDefaultLanguageVariant = 'tg-latn';
87 $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
88 }
89
90 function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
91 global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
92
93 $wgContLang = Language::factory( 'tg-latn' );
94 $wgDefaultLanguageVariant = 'tg';
95 $wgRequest->setVal( 'variant', null );
96 $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
97 }
98 }
99
100 /**
101 * Test converter (from Tajiki to latin orthography)
102 */
103 class TestConverter extends LanguageConverter {
104 private $table = array(
105 'б' => 'b',
106 'в' => 'v',
107 'г' => 'g',
108 );
109
110 function loadDefaultTables() {
111 $this->mTables = array(
112 'tg-latn' => new ReplacementArray( $this->table ),
113 'tg' => new ReplacementArray()
114 );
115 }
116
117 }
118
119 class LanguageTest extends Language {
120 function __construct() {
121 parent::__construct();
122 $variants = array( 'tg', 'tg-latn' );
123 $this->mConverter = new TestConverter( $this, 'tg', $variants );
124 }
125 }