5 * @covers SpecialMyLanguage
7 class SpecialMyLanguageTest
extends MediaWikiTestCase
{
8 public function addDBDataOnce() {
14 'Page/Another/zh-hans',
16 foreach ( $titles as $title ) {
17 $page = WikiPage
::factory( Title
::newFromText( $title ) );
18 if ( $page->getId() == 0 ) {
20 new WikitextContent( 'UTContent' ),
24 User
::newFromName( 'UTSysop' ) );
30 * @covers SpecialMyLanguage::findTitle
31 * @dataProvider provideFindTitle
32 * @param string $expected
33 * @param string $subpage
34 * @param string $langCode
35 * @param string $userLang
37 public function testFindTitle( $expected, $subpage, $langCode, $userLang ) {
38 $this->setMwGlobals( 'wgLanguageCode', $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 ) );
49 * @param string $expected
50 * @param Title|null $title
52 private function assertTitle( $expected, $title ) {
54 $title = $title->getPrefixedText();
56 $this->assertEquals( $expected, $title );
59 public static function provideFindTitle() {
60 // See addDBDataOnce() for page declarations
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' ],