| Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/tests/phpunit/includes/BabelUserLanguageLookupTest.php |
<?php
namespace Wikibase\Test;
use User;
/**
* @covers Wikibase\Repo\BabelUserLanguageLookup
*
* @group Wikibase
* @group WikibaseRepo
* @group EntityView
* @group Database
*
* @license GPL-2.0+
* @author Thiemo Mättig
*/
class BabelUserLanguageLookupTest extends \MediaWikiTestCase {
/**
* @param string $subject
*
* @return string[]
*/
private function split( $subject ) {
return empty( $subject ) ? array() : explode( '|', $subject );
}
/**
* TODO: We really want to test grabbing languages from the Babel extension,
* but how can we test that?
*
* @dataProvider userLanguagesProvider
*
* @param string $usersLanguage
* @param string $babelLanguages
* @param string $userSpecifiedLanguages
* @param string $allExpected
*/
public function testGetUserLanguages(
$usersLanguage,
$babelLanguages,
$userSpecifiedLanguages,
$allExpected
) {
$message = $usersLanguage . ' with {{#babel:' . $babelLanguages . '}} in assert #';
$babelLanguages = $this->split( $babelLanguages );
$userSpecifiedLanguages = $this->split( $userSpecifiedLanguages );
$allExpected = $this->split( $allExpected );
$user = new User();
// Required to not be anonymous
$user->setId( 1 );
$user->setName( 'UserLanguageLookupTest-TestUser' );
$user->setOption( 'language', $usersLanguage );
// Not a real option, just to manipulate the double class
$user->setOption( 'babelLanguages', $babelLanguages );
$userLanguageLookup = new BabelUserLanguageLookupDouble( $user );
$this->assertEquals( $allExpected, array_values(
$userLanguageLookup->getAllUserLanguages( $user ) ), $message . '1' );
$this->assertEquals( $userSpecifiedLanguages,
$userLanguageLookup->getUserSpecifiedLanguages( $user ), $message . '5' );
}
public function userLanguagesProvider() {
return array(
// 0. Language from the users settings
// 1. List of languages from the users babel box (as returned by the Babel extension)
// 2. List of usable user specified languages
// 3. Expected collection of all languages
array( 'de', '', '', 'de' ),
array( 'de', 'en', 'en', 'de|en' ),
array( 'de', 'de|en|fr', 'de|en|fr', 'de|en|fr' ),
array( 'en', '', '', 'en' ),
array( 'en', 'en', 'en', 'en' ),
array( 'en', 'de|en|fr', 'de|en|fr', 'en|de|fr' ),
// Codes reported from Babel are getting lower-cased
array( 'en', 'nds-NL', 'nds-nl', 'en|nds-nl' ),
// Whatever we get from Babel will be retained
array( 'en', 'invalid-language-code', 'invalid-language-code', 'en|invalid-language-code' ),
);
}
}