Do not insert page titles into querycache.qc_value
[lhc/web/wiklou.git] / tests / phpunit / includes / specials / SpecialMyLanguageTest.php
1 <?php
2
3 /**
4 * @group Database
5 * @covers SpecialMyLanguage
6 */
7 class SpecialMyLanguageTest extends MediaWikiTestCase {
8 public function addDBDataOnce() {
9 $titles = [
10 'Page/Another',
11 'Page/Another/ar',
12 'Page/Another/en',
13 'Page/Another/ru',
14 'Page/Another/zh-hans',
15 ];
16 foreach ( $titles as $title ) {
17 $page = WikiPage::factory( Title::newFromText( $title ) );
18 if ( $page->getId() == 0 ) {
19 $page->doEditContent(
20 new WikitextContent( 'UTContent' ),
21 'UTPageSummary',
22 EDIT_NEW,
23 false,
24 User::newFromName( 'UTSysop' ) );
25 }
26 }
27 }
28
29 /**
30 * @covers SpecialMyLanguage::findTitle
31 * @dataProvider provideFindTitle
32 * @param string $expected
33 * @param string $subpage
34 * @param string $langCode
35 * @param string $userLang
36 */
37 public function testFindTitle( $expected, $subpage, $langCode, $userLang ) {
38 $this->setContentLang( $langCode );
39 $special = new SpecialMyLanguage();
40 $special->getContext()->setLanguage( $userLang );
41 // Test with subpages both enabled and disabled
42 $this->mergeMwGlobalArrayValue( 'wgNamespacesWithSubpages', [ NS_MAIN => true ] );
43 $this->assertTitle( $expected, $special->findTitle( $subpage ) );
44 $this->mergeMwGlobalArrayValue( 'wgNamespacesWithSubpages', [ NS_MAIN => false ] );
45 $this->assertTitle( $expected, $special->findTitle( $subpage ) );
46 }
47
48 /**
49 * @param string $expected
50 * @param Title|null $title
51 */
52 private function assertTitle( $expected, $title ) {
53 if ( $title ) {
54 $title = $title->getPrefixedText();
55 }
56 $this->assertEquals( $expected, $title );
57 }
58
59 public static function provideFindTitle() {
60 // See addDBDataOnce() for page declarations
61 return [
62 // [ $expected, $subpage, $langCode, $userLang ]
63 [ null, '::Fail', 'en', 'en' ],
64 [ 'Page/Another', 'Page/Another/en', 'en', 'en' ],
65 [ 'Page/Another', 'Page/Another', 'en', 'en' ],
66 [ 'Page/Another/ru', 'Page/Another', 'en', 'ru' ],
67 [ 'Page/Another', 'Page/Another', 'en', 'es' ],
68 [ 'Page/Another/zh-hans', 'Page/Another', 'en', 'zh-hans' ],
69 [ 'Page/Another/zh-hans', 'Page/Another', 'en', 'zh-mo' ],
70 [ 'Page/Another/en', 'Page/Another', 'de', 'es' ],
71 [ 'Page/Another/ar', 'Page/Another', 'en', 'ar' ],
72 [ 'Page/Another/ar', 'Page/Another', 'en', 'arz' ],
73 [ 'Page/Another/ar', 'Page/Another/de', 'en', 'arz' ],
74 [ 'Page/Another/ru', 'Page/Another/ru', 'en', 'arz' ],
75 [ 'Page/Another/ar', 'Page/Another/ru', 'en', 'ar' ],
76 ];
77 }
78 }