|
|
@@ -672,6 +672,53 @@ class FactoryTest extends TestCase { |
|
|
|
self::assertSame($expected, $result); |
|
|
|
} |
|
|
|
|
|
|
|
public static function dataTestReduceToLanguages(): array { |
|
|
|
return [ |
|
|
|
['en', ['en', 'de', 'fr', 'it', 'es'], ['en', 'fr', 'de'], ['en', 'fr', 'de']], |
|
|
|
['en', ['en', 'de', 'fr', 'it', 'es'], ['en', 'de'], ['en', 'de']], |
|
|
|
['en', ['en', 'de', 'fr', 'it', 'es'], [], ['de', 'en', 'es', 'fr', 'it']], |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* test |
|
|
|
* - if available languages set can be reduced by configuration |
|
|
|
* - if available languages set is not reduced to an empty set if |
|
|
|
* the reduce config is an empty set |
|
|
|
* |
|
|
|
* @dataProvider dataTestReduceToLanguages |
|
|
|
* |
|
|
|
* @param string $lang |
|
|
|
* @param array $availableLanguages |
|
|
|
* @param array $reducedLanguageSet |
|
|
|
* @param array $expected |
|
|
|
*/ |
|
|
|
public function testReduceLanguagesByConfiguration(string $lang, array $availableLanguages, array $reducedLanguageSet, array $expected): void { |
|
|
|
$factory = $this->getFactory(['findAvailableLanguages', 'languageExists']); |
|
|
|
$factory->expects(self::any()) |
|
|
|
->method('languageExists')->willReturn(true); |
|
|
|
$factory->expects(self::any()) |
|
|
|
->method('findAvailableLanguages') |
|
|
|
->willReturnCallback(function ($app) use ($availableLanguages) { |
|
|
|
return $availableLanguages; |
|
|
|
}); |
|
|
|
|
|
|
|
$this->config |
|
|
|
->method('getSystemValue') |
|
|
|
->willReturnMap([ |
|
|
|
['force_language', false, false], |
|
|
|
['default_language', false, $lang], |
|
|
|
['reduce_to_languages', [], $reducedLanguageSet] |
|
|
|
]); |
|
|
|
|
|
|
|
$result = $this->invokePrivate($factory, 'getLanguages'); |
|
|
|
$commonLanguagesCodes = array_map(function ($lang) { |
|
|
|
return $lang['code']; |
|
|
|
}, $result['commonLanguages']); |
|
|
|
|
|
|
|
self::assertEqualsCanonicalizing($expected, $commonLanguagesCodes); |
|
|
|
} |
|
|
|
|
|
|
|
public function languageIteratorRequestProvider():array { |
|
|
|
return [ |
|
|
|
[ true, $this->createMock(IUser::class)], |