summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php')
-rw-r--r--www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php118
1 files changed, 107 insertions, 11 deletions
diff --git a/www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php b/www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php
index be2dfa50..2a76de70 100644
--- a/www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php
+++ b/www/wiki/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php
@@ -7,15 +7,15 @@ class MessageGroupBaseTest extends MediaWikiTestCase {
*/
protected $group;
- protected $groupConfiguration = array(
- 'BASIC' => array(
+ protected $groupConfiguration = [
+ 'BASIC' => [
'class' => 'FileBasedMessageGroup',
'id' => 'test-id',
'label' => 'Test Label',
'namespace' => 'NS_MEDIAWIKI',
'description' => 'Test description',
- ),
- );
+ ],
+ ];
protected function setUp() {
parent::setUp();
@@ -61,11 +61,11 @@ class MessageGroupBaseTest extends MediaWikiTestCase {
public function testGetNamespaceNumber() {
$conf = $this->groupConfiguration;
- $conf['BASIC']['namespace'] = NS_IMAGE;
+ $conf['BASIC']['namespace'] = NS_FILE;
$this->group = MessageGroupBase::factory( $conf );
$this->assertEquals(
- NS_IMAGE,
+ NS_FILE,
$this->group->getNamespace(),
'should parse integer namespace number.'
);
@@ -77,19 +77,115 @@ class MessageGroupBaseTest extends MediaWikiTestCase {
$this->group = MessageGroupBase::factory( $conf );
$this->assertEquals(
- NS_IMAGE,
+ NS_FILE,
$this->group->getNamespace(),
'should parse string namespace name.'
);
}
- /**
- * @expectedException MWException
- * @expectedExceptionMessage No valid namespace defined
- */
+ public function testInsertablesSuggesterClass() {
+ $conf = $this->groupConfiguration;
+ $conf['INSERTABLES']['class'] = 'FakeInsertablesSuggester';
+ $this->group = MessageGroupBase::factory( $conf );
+
+ $this->assertArrayEquals(
+ [ new Insertable( 'Fake', 'Insertables', 'Suggester' ) ],
+ $this->group->getInsertablesSuggester()->getInsertables( '' ),
+ 'should correctly get an InsertablesSuggester using \'class\' option.'
+ );
+ }
+
+ public function testInsertablesSuggesterClasses() {
+ $conf = $this->groupConfiguration;
+ $conf['INSERTABLES']['classes'] = [
+ 'FakeInsertablesSuggester',
+ 'AnotherFakeInsertablesSuggester',
+ ];
+ $this->group = MessageGroupBase::factory( $conf );
+
+ $this->assertArrayEquals(
+ [
+ new Insertable( 'Fake', 'Insertables', 'Suggester' ),
+ new Insertable( 'AnotherFake', 'Insertables', 'Suggester' ),
+ ],
+ $this->group->getInsertablesSuggester()->getInsertables( '' ),
+ 'should correctly get InsertablesSuggesters using \'classes\' option.'
+ );
+ }
+
+ public function testInsertablesSuggesterClassAndClasses() {
+ $conf = $this->groupConfiguration;
+ $conf['INSERTABLES']['class'] = 'FakeInsertablesSuggester';
+ $conf['INSERTABLES']['classes'] = [ 'AnotherFakeInsertablesSuggester' ];
+ $this->group = MessageGroupBase::factory( $conf );
+
+ $this->assertArrayEquals(
+ [
+ new Insertable( 'Fake', 'Insertables', 'Suggester' ),
+ new Insertable( 'AnotherFake', 'Insertables', 'Suggester' ),
+ ],
+ $this->group->getInsertablesSuggester()->getInsertables( '' ),
+ 'should correctly get InsertablesSuggesters using both \'class\' and \'classes\' options.'
+ );
+
+ $conf['INSERTABLES']['classes'][] = 'FakeInsertablesSuggester';
+ $conf['INSERTABLES']['classes'][] = 'AnotherFakeInsertablesSuggester';
+ $this->group = MessageGroupBase::factory( $conf );
+
+ $this->assertArrayEquals(
+ [
+ new Insertable( 'Fake', 'Insertables', 'Suggester' ),
+ new Insertable( 'AnotherFake', 'Insertables', 'Suggester' ),
+ ],
+ $this->group->getInsertablesSuggester()->getInsertables( '' ),
+ 'should correctly get InsertablesSuggesters using ' .
+ 'both \'class\' and \'classes\' options and removing duplicates.'
+ );
+ }
+
public function testGetNamespaceInvalid() {
$conf = $this->groupConfiguration;
$conf['BASIC']['namespace'] = 'ergweofijwef';
+ $this->setExpectedException( MWException::class, 'No valid namespace defined' );
MessageGroupBase::factory( $conf );
}
+
+ public function testModifyMessageGroupStates() {
+ // Create a basic workflow.
+ $this->setMwGlobals( [
+ 'wgTranslateWorkflowStates' => [
+ 'progress' => [ 'color' => 'd33' ],
+ 'proofreading' => [ 'color' => 'fc3' ],
+ ],
+ ] );
+ // Install a special permission when the group ID is matched.
+ $this->setTemporaryHook(
+ 'Translate:modifyMessageGroupStates',
+ function ( $groupId, &$conf ) {
+ if ( $groupId === 'test-id' ) {
+ // No users have this.
+ $conf['proofreading']['right'] = 'inobtanium';
+ }
+ }
+ );
+
+ $expectedStates = [
+ 'progress' => [ 'color' => 'd33' ],
+ 'proofreading' => [ 'color' => 'fc3', 'right' => 'inobtanium' ],
+ ];
+ $states = $this->group->getMessageGroupStates()->getStates();
+ $this->assertEquals( $expectedStates, $states );
+ }
+}
+
+class FakeInsertablesSuggester implements InsertablesSuggester {
+ public function getInsertables( $text ) {
+ return [ new Insertable( 'Fake', 'Insertables', 'Suggester' ) ];
+ }
+}
+
+class AnotherFakeInsertablesSuggester implements InsertablesSuggester {
+ public function getInsertables( $text ) {
+ return [ new Insertable( 'AnotherFake', 'Insertables', 'Suggester' ) ];
+ }
}