@ -1,4 +1,7 @@
< ? php
declare ( strict_types = 1 );
/**
* Copyright ( c ) 2016 Joas Schilling < nickvergessen @ owncloud . com >
* This file is licensed under the Affero General Public License version 3 or
@ -15,22 +18,18 @@ use OCP\IRequest;
use OCP\IUser ;
use OCP\IUserSession ;
use OCP\L10N\ILanguageIterator ;
use PHPUnit\Framework\MockObject\MockObject ;
use Test\TestCase ;
/**
* Class FactoryTest
*
* @ package Test\L10N
*/
class FactoryTest extends TestCase {
/** @var IConfig|\PHPUnit\Framework\MockObject\ MockObject */
/** @var IConfig|MockObject */
protected $config ;
/** @var IRequest|\PHPUnit\Framework\MockObject\ MockObject */
/** @var IRequest|MockObject */
protected $request ;
/** @var IUserSession|\PHPUnit\Framework\MockObject\ MockObject */
/** @var IUserSession|MockObject */
protected $userSession ;
/** @var string */
@ -39,29 +38,22 @@ class FactoryTest extends TestCase {
protected function setUp () : void {
parent :: setUp ();
$this -> config = $this -> getMockBuilder ( IConfig :: class )
-> disableOriginalConstructor ()
-> getMock ();
$this -> request = $this -> getMockBuilder ( IRequest :: class )
-> disableOriginalConstructor ()
-> getMock ();
$this -> userSession = $this -> getMockBuilder ( IUserSession :: class )
-> disableOriginalConstructor ()
-> getMock ();
$this -> config = $this -> createMock ( IConfig :: class );
$this -> request = $this -> createMock ( IRequest :: class );
$this -> userSession = $this -> createMock ( IUserSession :: class );
$this -> serverRoot = \OC :: $SERVERROOT ;
}
/**
* @ param array $methods
* @ param string [] $methods
* @ param bool $mockRequestGetHeaderMethod
* @ return Factory | \PHPUnit\Framework\MockObject\MockObject
*
* @ return Factory | MockObject
*/
protected function getFactory ( array $methods = [], $mockRequestGetHeaderMethod = false ) {
if ( $mockRequestGetHeaderMethod ) {
$this -> request -> expects ( $this -> any ())
$this -> request -> expects ( self :: any ())
-> method ( 'getHeader' )
-> willReturn ( '' );
}
@ -76,245 +68,245 @@ class FactoryTest extends TestCase {
])
-> setMethods ( $methods )
-> getMock ();
} else {
return new Factory ( $this -> config , $this -> request , $this -> userSession , $this -> serverRoot );
}
return new Factory ( $this -> config , $this -> request , $this -> userSession , $this -> serverRoot );
}
public function dataFindAvailableLanguages () {
public function dataFindAvailableLanguages () : array {
return [
[ null ],
[ 'files' ],
];
}
public function testFindLanguageWithExistingRequestLanguageAndNoApp () {
public function testFindLanguageWithExistingRequestLanguageAndNoApp () : void {
$factory = $this -> getFactory ([ 'languageExists' ]);
$this -> invokePrivate ( $factory , 'requestLanguage' , [ 'de' ]);
$factory -> expects ( $this -> once ())
$factory -> expects ( self :: once ())
-> method ( 'languageExists' )
-> with ( null , 'de' )
-> willReturn ( true );
$this -> assertSame ( 'de' , $factory -> findLanguage ());
self :: assertSame ( 'de' , $factory -> findLanguage ());
}
public function testFindLanguageWithExistingRequestLanguageAndApp () {
public function testFindLanguageWithExistingRequestLanguageAndApp () : void {
$factory = $this -> getFactory ([ 'languageExists' ]);
$this -> invokePrivate ( $factory , 'requestLanguage' , [ 'de' ]);
$factory -> expects ( $this -> once ())
$factory -> expects ( self :: once ())
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'de' )
-> willReturn ( true );
$this -> assertSame ( 'de' , $factory -> findLanguage ( 'MyApp' ));
self :: assertSame ( 'de' , $factory -> findLanguage ( 'MyApp' ));
}
public function testFindLanguageWithNotExistingRequestLanguageAndExistingStoredUserLanguage () {
public function testFindLanguageWithNotExistingRequestLanguageAndExistingStoredUserLanguage () : void {
$factory = $this -> getFactory ([ 'languageExists' ]);
$this -> invokePrivate ( $factory , 'requestLanguage' , [ 'de' ]);
$factory -> expects ( $this -> at ( 0 ))
$factory -> expects ( self :: at ( 0 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'de' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 0 ))
-> expects ( self :: at ( 0 ))
-> method ( 'getSystemValue' )
-> with ( 'force_language' , false )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 1 ))
-> expects ( self :: at ( 1 ))
-> method ( 'getSystemValue' )
-> with ( 'installed' , false )
-> willReturn ( true );
$user = $this -> getMockBuilder ( IUser :: class )
-> getMock ();
$user -> expects ( $this -> once ())
$user -> expects ( self :: once ())
-> method ( 'getUID' )
-> willReturn ( 'MyUserUid' );
$this -> userSession
-> expects ( $this -> exactly ( 2 ))
-> expects ( self :: exactly ( 2 ))
-> method ( 'getUser' )
-> willReturn ( $user );
$this -> config
-> expects ( $this -> once ())
-> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'MyUserUid' , 'core' , 'lang' , null )
-> willReturn ( 'jp' );
$factory -> expects ( $this -> at ( 1 ))
$factory -> expects ( self :: at ( 1 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'jp' )
-> willReturn ( true );
$this -> assertSame ( 'jp' , $factory -> findLanguage ( 'MyApp' ));
self :: assertSame ( 'jp' , $factory -> findLanguage ( 'MyApp' ));
}
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguage () {
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguage () : void {
$factory = $this -> getFactory ([ 'languageExists' ], true );
$this -> invokePrivate ( $factory , 'requestLanguage' , [ 'de' ]);
$factory -> expects ( $this -> at ( 0 ))
$factory -> expects ( self :: at ( 0 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'de' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 0 ))
-> expects ( self :: at ( 0 ))
-> method ( 'getSystemValue' )
-> with ( 'force_language' , false )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 1 ))
-> expects ( self :: at ( 1 ))
-> method ( 'getSystemValue' )
-> with ( 'installed' , false )
-> willReturn ( true );
$user = $this -> getMockBuilder ( IUser :: class )
-> getMock ();
$user -> expects ( $this -> once ())
$user -> expects ( self :: once ())
-> method ( 'getUID' )
-> willReturn ( 'MyUserUid' );
$this -> userSession
-> expects ( $this -> exactly ( 2 ))
-> expects ( self :: exactly ( 2 ))
-> method ( 'getUser' )
-> willReturn ( $user );
$this -> config
-> expects ( $this -> once ())
-> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'MyUserUid' , 'core' , 'lang' , null )
-> willReturn ( 'jp' );
$factory -> expects ( $this -> at ( 1 ))
$factory -> expects ( self :: at ( 1 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'jp' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 3 ))
-> expects ( self :: at ( 3 ))
-> method ( 'getSystemValue' )
-> with ( 'default_language' , false )
-> willReturn ( 'es' );
$factory -> expects ( $this -> at ( 2 ))
$factory -> expects ( self :: at ( 2 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'es' )
-> willReturn ( true );
$this -> assertSame ( 'es' , $factory -> findLanguage ( 'MyApp' ));
self :: assertSame ( 'es' , $factory -> findLanguage ( 'MyApp' ));
}
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguageAndNotExistingDefault () {
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguageAndNotExistingDefault () : void {
$factory = $this -> getFactory ([ 'languageExists' ], true );
$this -> invokePrivate ( $factory , 'requestLanguage' , [ 'de' ]);
$factory -> expects ( $this -> at ( 0 ))
$factory -> expects ( self :: at ( 0 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'de' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 0 ))
-> expects ( self :: at ( 0 ))
-> method ( 'getSystemValue' )
-> with ( 'force_language' , false )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 1 ))
-> expects ( self :: at ( 1 ))
-> method ( 'getSystemValue' )
-> with ( 'installed' , false )
-> willReturn ( true );
$user = $this -> getMockBuilder ( IUser :: class )
-> getMock ();
$user -> expects ( $this -> once ())
$user -> expects ( self :: once ())
-> method ( 'getUID' )
-> willReturn ( 'MyUserUid' );
$this -> userSession
-> expects ( $this -> exactly ( 2 ))
-> expects ( self :: exactly ( 2 ))
-> method ( 'getUser' )
-> willReturn ( $user );
$this -> config
-> expects ( $this -> once ())
-> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'MyUserUid' , 'core' , 'lang' , null )
-> willReturn ( 'jp' );
$factory -> expects ( $this -> at ( 1 ))
$factory -> expects ( self :: at ( 1 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'jp' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 3 ))
-> expects ( self :: at ( 3 ))
-> method ( 'getSystemValue' )
-> with ( 'default_language' , false )
-> willReturn ( 'es' );
$factory -> expects ( $this -> at ( 2 ))
$factory -> expects ( self :: at ( 2 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'es' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> never ())
-> expects ( self :: never ())
-> method ( 'setUserValue' );
$this -> assertSame ( 'en' , $factory -> findLanguage ( 'MyApp' ));
self :: assertSame ( 'en' , $factory -> findLanguage ( 'MyApp' ));
}
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguageAndNotExistingDefaultAndNoAppInScope () {
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguageAndNotExistingDefaultAndNoAppInScope () : void {
$factory = $this -> getFactory ([ 'languageExists' ], true );
$this -> invokePrivate ( $factory , 'requestLanguage' , [ 'de' ]);
$factory -> expects ( $this -> at ( 0 ))
$factory -> expects ( self :: at ( 0 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'de' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 0 ))
-> expects ( self :: at ( 0 ))
-> method ( 'getSystemValue' )
-> with ( 'force_language' , false )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 1 ))
-> expects ( self :: at ( 1 ))
-> method ( 'getSystemValue' )
-> with ( 'installed' , false )
-> willReturn ( true );
$user = $this -> getMockBuilder ( IUser :: class )
-> getMock ();
$user -> expects ( $this -> once ())
$user -> expects ( self :: once ())
-> method ( 'getUID' )
-> willReturn ( 'MyUserUid' );
$this -> userSession
-> expects ( $this -> exactly ( 2 ))
-> expects ( self :: exactly ( 2 ))
-> method ( 'getUser' )
-> willReturn ( $user );
$this -> config
-> expects ( $this -> once ())
-> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'MyUserUid' , 'core' , 'lang' , null )
-> willReturn ( 'jp' );
$factory -> expects ( $this -> at ( 1 ))
$factory -> expects ( self :: at ( 1 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'jp' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> at ( 3 ))
-> expects ( self :: at ( 3 ))
-> method ( 'getSystemValue' )
-> with ( 'default_language' , false )
-> willReturn ( 'es' );
$factory -> expects ( $this -> at ( 2 ))
$factory -> expects ( self :: at ( 2 ))
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'es' )
-> willReturn ( false );
$this -> config
-> expects ( $this -> never ())
-> expects ( self :: never ())
-> method ( 'setUserValue' )
-> with ( 'MyUserUid' , 'core' , 'lang' , 'en' );
$this -> assertSame ( 'en' , $factory -> findLanguage ( 'MyApp' ));
self :: assertSame ( 'en' , $factory -> findLanguage ( 'MyApp' ));
}
public function testFindLanguageWithForcedLanguage () {
public function testFindLanguageWithForcedLanguage () : void {
$factory = $this -> getFactory ([ 'languageExists' ]);
$this -> config
-> expects ( $this -> at ( 0 ))
-> expects ( self :: at ( 0 ))
-> method ( 'getSystemValue' )
-> with ( 'force_language' , false )
-> willReturn ( 'de' );
$factory -> expects ( $this -> once ())
$factory -> expects ( self :: once ())
-> method ( 'languageExists' )
-> with ( 'MyApp' , 'de' )
-> willReturn ( true );
$this -> assertSame ( 'de' , $factory -> findLanguage ( 'MyApp' ));
self :: assertSame ( 'de' , $factory -> findLanguage ( 'MyApp' ));
}
/**
@ -322,17 +314,17 @@ class FactoryTest extends TestCase {
*
* @ param string | null $app
*/
public function testFindAvailableLanguages ( $app ) {
public function testFindAvailableLanguages ( $app ) : void {
$factory = $this -> getFactory ([ 'findL10nDir' ]);
$factory -> expects ( $this -> once ())
$factory -> expects ( self :: once ())
-> method ( 'findL10nDir' )
-> with ( $app )
-> willReturn ( \OC :: $SERVERROOT . '/tests/data/l10n/' );
$this -> assertEqualsCanonicalizing ([ 'cs' , 'de' , 'en' , 'ru' ], $factory -> findAvailableLanguages ( $app ));
self :: assertEqualsCanonicalizing ([ 'cs' , 'de' , 'en' , 'ru' ], $factory -> findAvailableLanguages ( $app ));
}
public function dataLanguageExists () {
public function dataLanguageExists () : array {
return [
[ null , 'en' , [], true ],
[ null , 'de' , [], false ],
@ -345,22 +337,22 @@ class FactoryTest extends TestCase {
];
}
public function testFindAvailableLanguagesWithThemes () {
public function testFindAvailableLanguagesWithThemes () : void {
$this -> serverRoot .= '/tests/data' ;
$app = 'files' ;
$factory = $this -> getFactory ([ 'findL10nDir' ]);
$factory -> expects ( $this -> once ())
$factory -> expects ( self :: once ())
-> method ( 'findL10nDir' )
-> with ( $app )
-> willReturn ( $this -> serverRoot . '/apps/files/l10n/' );
$this -> config
-> expects ( $this -> once ())
-> expects ( self :: once ())
-> method ( 'getSystemValue' )
-> with ( 'theme' )
-> willReturn ( 'abc' );
$this -> assertEqualsCanonicalizing ([ 'en' , 'zz' ], $factory -> findAvailableLanguages ( $app ));
self :: assertEqualsCanonicalizing ([ 'en' , 'zz' ], $factory -> findAvailableLanguages ( $app ));
}
/**
@ -371,17 +363,17 @@ class FactoryTest extends TestCase {
* @ param string [] $availableLanguages
* @ param string $expected
*/
public function testLanguageExists ( $app , $lang , array $availableLanguages , $expected ) {
public function testLanguageExists ( $app , $lang , array $availableLanguages , $expected ) : void {
$factory = $this -> getFactory ([ 'findAvailableLanguages' ]);
$factory -> expects (( $lang === 'en' ) ? $this -> never () : $this -> once ())
$factory -> expects (( $lang === 'en' ) ? self :: never () : self :: once ())
-> method ( 'findAvailableLanguages' )
-> with ( $app )
-> willReturn ( $availableLanguages );
$this -> assertSame ( $expected , $factory -> languageExists ( $app , $lang ));
self :: assertSame ( $expected , $factory -> languageExists ( $app , $lang ));
}
public function dataSetLanguageFromRequest () {
public function dataSetLanguageFromRequest () : array {
return [
// Language is available
[ null , 'de' , [ 'de' ], 'de' ],
@ -411,19 +403,19 @@ class FactoryTest extends TestCase {
* @ param string [] $availableLanguages
* @ param string $expected
*/
public function testGetLanguageFromRequest ( $app , $header , array $availableLanguages , $expected ) {
public function testGetLanguageFromRequest ( $app , $header , array $availableLanguages , $expected ) : void {
$factory = $this -> getFactory ([ 'findAvailableLanguages' , 'respectDefaultLanguage' ]);
$factory -> expects ( $this -> once ())
$factory -> expects ( self :: once ())
-> method ( 'findAvailableLanguages' )
-> with ( $app )
-> willReturn ( $availableLanguages );
$factory -> expects ( $this -> any ())
$factory -> expects ( self :: any ())
-> method ( 'respectDefaultLanguage' ) -> willReturnCallback ( function ( $app , $lang ) {
return $lang ;
});
$this -> request -> expects ( $this -> once ())
$this -> request -> expects ( self :: once ())
-> method ( 'getHeader' )
-> with ( 'ACCEPT_LANGUAGE' )
-> willReturn ( $header );
@ -432,11 +424,11 @@ class FactoryTest extends TestCase {
$this -> expectException ( LanguageNotFoundException :: class );
self :: invokePrivate ( $factory , 'getLanguageFromRequest' , [ $app ]);
} else {
$this -> assertSame ( $expected , self :: invokePrivate ( $factory , 'getLanguageFromRequest' , [ $app ]), 'Asserting returned language' );
self :: assertSame ( $expected , self :: invokePrivate ( $factory , 'getLanguageFromRequest' , [ $app ]), 'Asserting returned language' );
}
}
public function dataGetL10nFilesForApp () {
public function dataGetL10nFilesForApp () : array {
return [
[ null , 'de' , [ \OC :: $SERVERROOT . '/core/l10n/de.json' ]],
[ 'core' , 'ru' , [ \OC :: $SERVERROOT . '/core/l10n/ru.json' ]],
@ -454,12 +446,12 @@ class FactoryTest extends TestCase {
* @ param string | null $app
* @ param string $expected
*/
public function testGetL10nFilesForApp ( $app , $lang , $expected ) {
public function testGetL10nFilesForApp ( $app , $lang , $expected ) : void {
$factory = $this -> getFactory ();
$this -> assertSame ( $expected , $this -> invokePrivate ( $factory , 'getL10nFilesForApp' , [ $app , $lang ]));
self :: assertSame ( $expected , $this -> invokePrivate ( $factory , 'getL10nFilesForApp' , [ $app , $lang ]));
}
public function dataFindL10NDir () {
public function dataFindL10NDir () : array {
return [
[ null , \OC :: $SERVERROOT . '/core/l10n/' ],
[ 'core' , \OC :: $SERVERROOT . '/core/l10n/' ],
@ -476,12 +468,12 @@ class FactoryTest extends TestCase {
* @ param string | null $app
* @ param string $expected
*/
public function testFindL10NDir ( $app , $expected ) {
public function testFindL10NDir ( $app , $expected ) : void {
$factory = $this -> getFactory ();
$this -> assertSame ( $expected , $this -> invokePrivate ( $factory , 'findL10nDir' , [ $app ]));
self :: assertSame ( $expected , $this -> invokePrivate ( $factory , 'findL10nDir' , [ $app ]));
}
public function dataFindLanguage () {
public function dataFindLanguage () : array {
return [
// Not logged in
[ false , [], 'en' ],
@ -503,12 +495,12 @@ class FactoryTest extends TestCase {
* @ param array $availableLang
* @ param string $expected
*/
public function testFindLanguage ( $loggedIn , $availableLang , $expected ) {
public function testFindLanguage ( $loggedIn , $availableLang , $expected ) : void {
$userLang = 'nl' ;
$browserLang = 'de' ;
$defaultLang = 'fr' ;
$this -> config -> expects ( $this -> any ())
$this -> config -> expects ( self :: any ())
-> method ( 'getSystemValue' )
-> willReturnCallback ( function ( $var , $default ) use ( $defaultLang ) {
if ( $var === 'installed' ) {
@ -523,50 +515,167 @@ class FactoryTest extends TestCase {
if ( $loggedIn ) {
$user = $this -> getMockBuilder ( IUser :: class )
-> getMock ();
$user -> expects ( $this -> any ())
$user -> expects ( self :: any ())
-> method ( 'getUID' )
-> willReturn ( 'MyUserUid' );
$this -> userSession
-> expects ( $this -> any ())
-> expects ( self :: any ())
-> method ( 'getUser' )
-> willReturn ( $user );
$this -> config -> expects ( $this -> any ())
$this -> config -> expects ( self :: any ())
-> method ( 'getUserValue' )
-> with ( 'MyUserUid' , 'core' , 'lang' , null )
-> willReturn ( $userLang );
} else {
$this -> userSession
-> expects ( $this -> any ())
-> expects ( self :: any ())
-> method ( 'getUser' )
-> willReturn ( null );
}
$this -> request -> expects ( $this -> any ())
$this -> request -> expects ( self :: any ())
-> method ( 'getHeader' )
-> with ( $this -> equalTo ( 'ACCEPT_LANGUAGE' ))
-> willReturn ( $browserLang );
$factory = $this -> getFactory ([ 'languageExists' , 'findAvailableLanguages' , 'respectDefaultLanguage' ]);
$factory -> expects ( $this -> any ())
$factory -> expects ( self :: any ())
-> method ( 'languageExists' )
-> willReturnCallback ( function ( $app , $lang ) use ( $availableLang ) {
return in_array ( $lang , $availableLang );
});
$factory -> expects ( $this -> any ())
$factory -> expects ( self :: any ())
-> method ( 'findAvailableLanguages' )
-> willReturnCallback ( function ( $app ) use ( $availableLang ) {
return $availableLang ;
});
$factory -> expects ( $this -> any ())
$factory -> expects ( self :: any ())
-> method ( 'respectDefaultLanguage' ) -> willReturnCallback ( function ( $app , $lang ) {
return $lang ;
});
$lang = $factory -> findLanguage ( null );
$this -> assertSame ( $expected , $lang );
$lang = $factory -> findLanguage ();
self :: assertSame ( $expected , $lang );
}
public function testFindGenericLanguageByEnforcedLanguage () : void {
$factory = $this -> getFactory ();
$this -> config -> expects ( self :: once ())
-> method ( 'getSystemValue' )
-> with ( 'force_language' , false )
-> willReturn ( 'cz' );
$lang = $factory -> findGenericLanguage ();
self :: assertSame ( 'cz' , $lang );
}
public function testFindGenericLanguageByDefaultLanguage () : void {
$factory = $this -> getFactory ([ 'languageExists' ]);
$this -> config -> expects ( self :: exactly ( 2 ))
-> method ( 'getSystemValue' )
-> willReturnMap ([
[ 'force_language' , false , false ,],
[ 'default_language' , false , 'cz' ,],
]);
$factory -> expects ( self :: once ())
-> method ( 'languageExists' )
-> with ( null , 'cz' )
-> willReturn ( true );
$lang = $factory -> findGenericLanguage ();
self :: assertSame ( 'cz' , $lang );
}
public function testFindGenericLanguageByUserLanguage () : void {
$factory = $this -> getFactory ();
$this -> config -> expects ( self :: exactly ( 3 ))
-> method ( 'getSystemValue' )
-> willReturnMap ([
[ 'force_language' , false , false ,],
[ 'default_language' , false , false ,],
[ 'installed' , false , true ],
]);
$user = $this -> createMock ( IUser :: class );
$this -> userSession -> expects ( self :: once ())
-> method ( 'getUser' )
-> willReturn ( $user );
$user -> method ( 'getUID' ) -> willReturn ( 'user123' );
$this -> config -> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'user123' , 'core' , 'lang' , null )
-> willReturn ( 'cz' );
$lang = $factory -> findGenericLanguage ();
self :: assertSame ( 'cz' , $lang );
}
public function testFindGenericLanguageByRequestLanguage () : void {
$factory = $this -> getFactory ([ 'findAvailableLanguages' , 'languageExists' ]);
$this -> config -> method ( 'getSystemValue' )
-> willReturnMap ([
[ 'force_language' , false , false ,],
[ 'default_language' , false , false ,],
[ 'installed' , false , true ],
]);
$user = $this -> createMock ( IUser :: class );
$this -> userSession -> expects ( self :: once ())
-> method ( 'getUser' )
-> willReturn ( $user );
$user -> method ( 'getUID' ) -> willReturn ( 'user123' );
$this -> config -> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'user123' , 'core' , 'lang' , null )
-> willReturn ( null );
$this -> request -> expects ( self :: once ())
-> method ( 'getHeader' )
-> with ( 'ACCEPT_LANGUAGE' )
-> willReturn ( 'cz' );
$factory -> expects ( self :: once ())
-> method ( 'findAvailableLanguages' )
-> with ( null )
-> willReturn ([ 'cz' ]);
$lang = $factory -> findGenericLanguage ();
self :: assertSame ( 'cz' , $lang );
}
public function testFindGenericLanguageFallback () : void {
$factory = $this -> getFactory ([ 'findAvailableLanguages' , 'languageExists' ]);
$this -> config -> method ( 'getSystemValue' )
-> willReturnMap ([
[ 'force_language' , false , false ,],
[ 'default_language' , false , false ,],
[ 'installed' , false , true ],
]);
$user = $this -> createMock ( IUser :: class );
$this -> userSession -> expects ( self :: once ())
-> method ( 'getUser' )
-> willReturn ( $user );
$user -> method ( 'getUID' ) -> willReturn ( 'user123' );
$this -> config -> expects ( self :: once ())
-> method ( 'getUserValue' )
-> with ( 'user123' , 'core' , 'lang' , null )
-> willReturn ( null );
$this -> request -> expects ( self :: once ())
-> method ( 'getHeader' )
-> with ( 'ACCEPT_LANGUAGE' )
-> willReturn ( '' );
$factory -> expects ( self :: never ())
-> method ( 'findAvailableLanguages' );
$factory -> expects ( self :: never ())
-> method ( 'languageExists' );
$lang = $factory -> findGenericLanguage ();
self :: assertSame ( 'en' , $lang );
}
public function dataTestRespectDefaultLanguage () {
public function dataTestRespectDefaultLanguage () : array {
return [
[ 'de' , 'de_DE' , true , 'de_DE' ],
[ 'de' , 'de' , true , 'de' ],
@ -585,15 +694,15 @@ class FactoryTest extends TestCase {
* @ param bool $langExists
* @ param string $expected
*/
public function testRespectDefaultLanguage ( $lang , $defaultLanguage , $langExists , $expected ) {
public function testRespectDefaultLanguage ( $lang , $defaultLanguage , $langExists , $expected ) : void {
$factory = $this -> getFactory ([ 'languageExists' ]);
$factory -> expects ( $this -> any ())
$factory -> expects ( self :: any ())
-> method ( 'languageExists' ) -> willReturn ( $langExists );
$this -> config -> expects ( $this -> any ())
$this -> config -> expects ( self :: any ())
-> method ( 'getSystemValue' ) -> with ( 'default_language' , false ) -> willReturn ( $defaultLanguage );
$result = $this -> invokePrivate ( $factory , 'respectDefaultLanguage' , [ 'app' , $lang ]);
$this -> assertSame ( $expected , $result );
self :: assertSame ( $expected , $result );
}
public function languageIteratorRequestProvider () : array {
@ -607,11 +716,11 @@ class FactoryTest extends TestCase {
/**
* @ dataProvider languageIteratorRequestProvider
*/
public function testGetLanguageIterator ( bool $hasSession , IUser $iUserMock = null ) {
public function testGetLanguageIterator ( bool $hasSession , IUser $iUserMock = null ) : void {
$factory = $this -> getFactory ();
if ( $iUserMock === null ) {
$matcher = $this -> userSession -> expects ( $this -> once ())
$matcher = $this -> userSession -> expects ( self :: once ())
-> method ( 'getUser' );
if ( $hasSession ) {
@ -622,6 +731,6 @@ class FactoryTest extends TestCase {
}
$iterator = $factory -> getLanguageIterator ( $iUserMock );
$this -> assertInstanceOf ( ILanguageIterator :: class , $iterator );
self :: assertInstanceOf ( ILanguageIterator :: class , $iterator );
}
}