summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php')
-rw-r--r--www/wiki/extensions/Translate/tests/phpunit/MessageGroupsTest.php88
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 ] )
+ );
+ }
+}