%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/Translate/tests/phpunit/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/Translate/tests/phpunit/MessageGroupBaseTest.php |
<?php
class MessageGroupBaseTest extends MediaWikiTestCase {
/**
* @var MessageGroup
*/
protected $group;
protected $groupConfiguration = [
'BASIC' => [
'class' => 'FileBasedMessageGroup',
'id' => 'test-id',
'label' => 'Test Label',
'namespace' => 'NS_MEDIAWIKI',
'description' => 'Test description',
],
];
protected function setUp() {
parent::setUp();
$this->group = MessageGroupBase::factory( $this->groupConfiguration );
}
protected function tearDown() {
unset( $this->group );
parent::tearDown();
}
public function testGetConfiguration() {
$this->assertEquals(
$this->groupConfiguration,
$this->group->getConfiguration(),
'configuration should not change.'
);
}
public function testGetId() {
$this->assertEquals(
$this->groupConfiguration['BASIC']['id'],
$this->group->getId(),
'id comes from config.'
);
}
public function testGetSourceLanguage() {
$this->assertEquals(
'en',
$this->group->getSourceLanguage(),
'source language defaults to en.'
);
}
public function testGetNamespaceConstant() {
$this->assertEquals(
NS_MEDIAWIKI,
$this->group->getNamespace(),
'should parse string namespace contant.'
);
}
public function testGetNamespaceNumber() {
$conf = $this->groupConfiguration;
$conf['BASIC']['namespace'] = NS_FILE;
$this->group = MessageGroupBase::factory( $conf );
$this->assertEquals(
NS_FILE,
$this->group->getNamespace(),
'should parse integer namespace number.'
);
}
public function testGetNamespaceString() {
$conf = $this->groupConfiguration;
$conf['BASIC']['namespace'] = 'image';
$this->group = MessageGroupBase::factory( $conf );
$this->assertEquals(
NS_FILE,
$this->group->getNamespace(),
'should parse string namespace name.'
);
}
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.'
);
}
/**
* @expectedException MWException
* @expectedExceptionMessage No valid namespace defined
*/
public function testGetNamespaceInvalid() {
$conf = $this->groupConfiguration;
$conf['BASIC']['namespace'] = 'ergweofijwef';
MessageGroupBase::factory( $conf );
}
}
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' ) ];
}
}