Add testUiLanguages()
authorAidan Saunders <aidan.saunders@squiffle.uk>
Thu, 6 Dec 2018 13:30:56 +0000 (13:30 +0000)
committerAidan Saunders <aidan.saunders@squiffle.uk>
Mon, 10 Dec 2018 13:19:28 +0000 (13:19 +0000)
tests/phpunit/CRM/Core/I18n/LocaleTest.php

index 320f193f6c3fe90140f96b3434837947de0d57e9..3fac6a5e6240c1adcc602034456b9b483099ccaf 100644 (file)
@@ -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'] = [];
   }