From 47c1c8a1ce81fe26756011485d7aa28c1cf28f2d Mon Sep 17 00:00:00 2001 From: Aidan Saunders Date: Thu, 6 Dec 2018 13:30:56 +0000 Subject: [PATCH] Add testUiLanguages() --- tests/phpunit/CRM/Core/I18n/LocaleTest.php | 46 +++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/CRM/Core/I18n/LocaleTest.php b/tests/phpunit/CRM/Core/I18n/LocaleTest.php index 320f193f6c..3fac6a5e62 100644 --- a/tests/phpunit/CRM/Core/I18n/LocaleTest.php +++ b/tests/phpunit/CRM/Core/I18n/LocaleTest.php @@ -35,7 +35,6 @@ class CRM_Core_I18n_LocaleTest extends CiviUnitTestCase { } public function tearDown() { - CRM_Core_I18n_Schema::makeSinglelingual('en_US'); parent::tearDown(); } @@ -50,7 +49,52 @@ class CRM_Core_I18n_LocaleTest extends CiviUnitTestCase { $locale = CRM_Core_I18n::getLocale(); $this->assertEquals($locale, 'fr_CA'); + CRM_Core_I18n::singleton()->setLocale('en_US'); + CRM_Core_I18n_Schema::makeSinglelingual('en_US'); + Civi::$statics['CRM_Core_I18n']['singleton'] = []; + } + + public function testUiLanguages() { + $languages = [ + 'en_US' => 'English (United States)', + 'fr_CA' => 'French (Canada)', + 'de_DE' => 'German', + ]; + $codes = array_keys($languages); + Civi::settings()->set('uiLanguages', $codes); + + // Check we can retrieve the setting + $result = Civi::settings()->get('uiLanguages'); + $this->assertEquals($codes, $result); + + // Monolingual, codes + $result = CRM_Core_I18n::uiLanguages(TRUE); + $this->assertArrayValuesEqual($codes, $result); + + // Monolingual, codes and language labels + $result = CRM_Core_I18n::uiLanguages(); + $this->assertTreeEquals($languages, $result); + + $this->enableMultilingual(); + // Add fr_CA in db + CRM_Core_I18n_Schema::addLocale('fr_CA', 'en_US'); + // Make fr_CA 'available' + Civi::settings()->set('languageLimit', ['en_US' => 1, 'fr_CA' => 1]); + + // Multilingual, codes + $result = CRM_Core_I18n::uiLanguages(TRUE); + $this->assertArrayValuesEqual(['en_US', 'fr_CA'], $result); + + // Multilingual, codes and language labels + $result = CRM_Core_I18n::uiLanguages(); + $this->assertTreeEquals([ + 'en_US' => 'English (United States)', + 'fr_CA' => 'French (Canada)', + ], $result); + + CRM_Core_I18n::singleton()->setLocale('en_US'); + CRM_Core_I18n_Schema::makeSinglelingual('en_US'); Civi::$statics['CRM_Core_I18n']['singleton'] = []; } -- 2.25.1