diff options
Diffstat (limited to 'www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php')
-rw-r--r-- | www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php b/www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php new file mode 100644 index 00000000..7a483e5f --- /dev/null +++ b/www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php @@ -0,0 +1,88 @@ +<?php +/** + * @author Niklas Laxström + * @file + * @license GPL-2.0-or-later + */ + +/** + * @group Database + * ^ See AggregateMessageGroup::getGroups -> MessageGroups::getPriority + */ +class MessageGroupsTest extends MediaWikiTestCase { + protected function setUp() { + parent::setUp(); + + $conf = [ + __DIR__ . '/data/ParentGroups.yaml', + ]; + + global $wgHooks; + $this->setMwGlobals( [ + 'wgHooks' => $wgHooks, + 'wgTranslateGroupFiles' => $conf, + 'wgTranslateTranslationServices' => [], + 'wgTranslateMessageNamespaces' => [ NS_MEDIAWIKI ], + ] ); + $wgHooks['TranslatePostInitGroups'] = [ 'MessageGroups::getConfiguredGroups' ]; + + $mg = MessageGroups::singleton(); + $mg->setCache( new WANObjectCache( [ 'cache' => wfGetCache( 'hash' ) ] ) ); + $mg->recache(); + + MessageIndex::setInstance( new HashMessageIndex() ); + MessageIndex::singleton()->rebuild(); + } + + /** + * @dataProvider provideGroups + */ + public function testGetParentGroups( $expected, $target ) { + $group = MessageGroups::getGroup( $target ); + $got = MessageGroups::getParentGroups( $group ); + $this->assertEquals( $expected, $got ); + } + + public static function provideGroups() { + $cases = []; + $cases[] = [ + [ [ 'root1' ], [ 'root2' ] ], + 'twoparents' + ]; + + $cases[] = [ + [ [ 'root3', 'sub1' ], [ 'root3', 'sub2' ] ], + 'oneparent-twopaths' + ]; + + $cases[] = [ + [ + [ 'root4' ], + [ 'root4', 'nested1' ], + [ 'root4', 'nested1', 'nested2' ], + [ 'root4', 'nested2' ], + ], + 'multilevelnested' + ]; + + return $cases; + } + + public function testHaveSingleSourceLanguage() { + $this->setMwGlobals( [ + 'wgTranslateGroupFiles' => [ __DIR__ . '/data/MixedSourceLanguageGroups.yaml' ], + ] ); + MessageGroups::singleton()->recache(); + + $enGroup1 = MessageGroups::getGroup( 'EnglishGroup1' ); + $enGroup2 = MessageGroups::getGroup( 'EnglishGroup2' ); + $teGroup1 = MessageGroups::getGroup( 'TeluguGroup1' ); + + $this->assertEquals( 'en', MessageGroups::haveSingleSourceLanguage( + [ $enGroup1, $enGroup2 ] ) + ); + $this->assertEquals( '', MessageGroups::haveSingleSourceLanguage( + [ $enGroup1, $enGroup2, $teGroup1 ] ) + ); + } +} |