/tags/1.0.1/test/unit/lib/AkLocaleManager.php

https://github.com/akelos/v1 · PHP · 284 lines · 210 code · 73 blank · 1 comment · 1 complexity · a6d48963b80f87868961a353f8d3600e MD5 · raw file

  1. <?php
  2. defined('AK_TEST_DATABASE_ON') ? null : define('AK_TEST_DATABASE_ON', true);
  3. require_once(dirname(__FILE__).'/../../fixtures/config/config.php');
  4. require_once(AK_LIB_DIR.DS.'AkLocaleManager.php');
  5. class Test_of_AkLocaleManager_Class extends AkUnitTest
  6. {
  7. public $LocaleManager;
  8. public function setUp()
  9. {
  10. $this->LocaleManager = new AkLocaleManager();
  11. }
  12. public function tearDown()
  13. {
  14. unset ($this->LocaleManager);
  15. }
  16. public function Test_of__getAvailableLocales()
  17. {
  18. $available_locales = $this->LocaleManager->_getAvailableLocales();
  19. $this->assertTrue(is_array($available_locales['en']) && count($available_locales) > 0 ,'Locale en was not found on config/locales folder.');
  20. }
  21. public function Test_of__parseLocaleConfigString()
  22. {
  23. $config_string = 'en';
  24. $expected = array('en'=>array('en'));
  25. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  26. $this->assertEqual($expected, $result);
  27. $config_string = 'en,es ';
  28. $expected = array('en'=>array('en'),'es'=>array('es'));
  29. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  30. $this->assertEqual($expected, $result);
  31. $config_string = 'en; es';
  32. $expected = array('en'=>array('en'),'es'=>array('es'));
  33. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  34. $this->assertEqual($expected, $result);
  35. $config_string = 'en; es (spain)';
  36. $expected = array('en'=>array('en'),'es'=>array('es','spain'));
  37. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  38. $this->assertEqual($expected, $result);
  39. $config_string = 'en; es (spain|espana)';
  40. $expected = array('en'=>array('en'),'es'=>array('es','spain', 'espana'));
  41. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  42. $this->assertEqual($expected, $result);
  43. $config_string = 'es (spain)';
  44. $expected = array('es'=>array('es','spain'));
  45. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  46. $this->assertEqual($expected, $result);
  47. $config_string = 'es (spain|espana)';
  48. $expected = array('es'=>array('es','spain', 'espana'));
  49. $result = $this->LocaleManager->_parseLocaleConfigString($config_string);
  50. $this->assertEqual($expected, $result);
  51. }
  52. public function Test_of_getBrowserLanguages()
  53. {
  54. $_SERVER['HTTP_ACCEPT_LANGUAGE'] = $this->LocaleManager->_browser_language = 'en-us,en,es-es;q=0.5;';
  55. $this->LocaleManager->available_locales = array('en_us'=>'en_us','en'=>'en','es_es'=>'es_es');
  56. $expected = array_keys($this->LocaleManager->available_locales);
  57. $result = $this->LocaleManager->getBrowserLanguages();
  58. $this->assertEqual($expected, $result);
  59. unset($_SERVER['HTTP_ACCEPT_LANGUAGE']);
  60. $this->LocaleManager->available_locales = array('en'=>'en');
  61. $expected = array_keys($this->LocaleManager->available_locales);
  62. $result = $this->LocaleManager->getBrowserLanguages();
  63. $this->assertEqual($expected, $result);
  64. $this->LocaleManager->available_locales = array('en_us'=>'en_us');
  65. $expected = array_keys($this->LocaleManager->available_locales);
  66. $result = $this->LocaleManager->getBrowserLanguages();
  67. $this->assertEqual($expected, $result);
  68. }
  69. public function Test_of_getDefaultLanguageForUser()
  70. {
  71. unset($_SERVER['HTTP_ACCEPT_LANGUAGE']);
  72. $this->LocaleManager->available_locales = array('en_us'=>array('en_us'),'en'=>array('en'),'es_es'=>array('es_es'));
  73. $this->LocaleManager->browser_lang = $this->LocaleManager->getBrowserLanguages();
  74. $result = $this->LocaleManager->getDefaultLanguageForUser();
  75. $expected = 'en_us';
  76. $this->assertEqual($expected, $result);
  77. $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'es-es,en-us,en;q=0.5;';
  78. $this->LocaleManager->available_locales = array('en'=>array('en'),'en_us'=>array('en_us'),'es_es'=>array('es_es'));
  79. $this->LocaleManager->browser_lang = $this->LocaleManager->getBrowserLanguages();
  80. $result = $this->LocaleManager->getDefaultLanguageForUser();
  81. $expected = 'es_es';
  82. $this->assertEqual($expected, $result);
  83. $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en;q=0.5;';
  84. $this->LocaleManager->available_locales = array('es_es'=>array('es_es'));
  85. $this->LocaleManager->browser_lang = $this->LocaleManager->getBrowserLanguages();
  86. $result = $this->LocaleManager->getDefaultLanguageForUser();
  87. $expected = 'es_es';
  88. $this->assertEqual($expected, $result);
  89. }
  90. public function Test_of__getDefaultLocale()
  91. {
  92. $this->LocaleManager->available_locales = array('es_es'=>array('es_es'));
  93. $result = $this->LocaleManager->_getDefaultLocale();
  94. $expected = 'es_es';
  95. $this->assertEqual($expected, $result);
  96. $this->LocaleManager->available_locales = array('es_es'=>'es_es');
  97. $result = $this->LocaleManager->_getDefaultLocale();
  98. $expected = 'es_es';
  99. $this->assertEqual($expected, $result);
  100. $this->LocaleManager->available_locales = array('es_es');
  101. $result = $this->LocaleManager->_getDefaultLocale();
  102. $expected = 'es_es';
  103. $this->assertEqual($expected, $result);
  104. $this->LocaleManager->available_locales = array('en'=>array('en'),'es_es'=>array('es_es'));
  105. $result = $this->LocaleManager->_getDefaultLocale();
  106. $expected = 'en';
  107. $this->assertEqual($expected, $result);
  108. $result = $this->LocaleManager->_getDefaultLocale();
  109. $expected = 'en';
  110. $this->assertEqual($expected, $result);
  111. }
  112. public function Test_of_getLangFromUrl()
  113. {
  114. $Request = new AkObject();
  115. $Request->ak = 'en';
  116. $Request->_request['ak'] = 'en';
  117. $this->LocaleManager->available_locales = array('en'=>array('en'),'es_es'=>array('es_es','spain'));
  118. $expected = 'en';
  119. $result = $this->LocaleManager->getLangFromUrl($Request);
  120. $this->assertEqual($expected, $result);
  121. $this->assertEqual($Request->_request['ak'],'');
  122. $this->assertEqual($Request->ak,'');
  123. $Request->ak = '/en/';
  124. $Request->_request['ak'] = '/en/';
  125. $result = $this->LocaleManager->getLangFromUrl($Request);
  126. $this->assertEqual($expected, $result);
  127. $this->assertEqual($Request->_request['ak'],'');
  128. $this->assertEqual($Request->ak,'');
  129. $Request->ak = 'en/post';
  130. $Request->_request['ak'] = 'en/post';
  131. $result = $this->LocaleManager->getLangFromUrl($Request);
  132. $this->assertEqual($expected, $result);
  133. $this->assertEqual($Request->_request['ak'],'post');
  134. $this->assertEqual($Request->ak,'post');
  135. $Request->ak = 'fr/post';
  136. $Request->_request['ak'] = 'fr/post';
  137. unset($Request->lang);
  138. $result = $this->LocaleManager->getLangFromUrl($Request);
  139. $this->assertFalse($result);
  140. $this->assertEqual($Request->_request['ak'],'fr/post');
  141. $this->assertEqual($Request->ak,'fr/post');
  142. $Request->ak = 'post/es_es';
  143. $Request->_request['ak'] = 'post/es_es';
  144. unset($Request->lang);
  145. $result = $this->LocaleManager->getLangFromUrl($Request);
  146. $this->assertFalse($result);
  147. $this->assertEqual($Request->_request['ak'],'post/es_es');
  148. $this->assertEqual($Request->ak,'post/es_es');
  149. $Request->ak = 'es/post';
  150. $Request->_request['ak'] = 'es/post';
  151. unset($Request->lang);
  152. $result = $this->LocaleManager->getLangFromUrl($Request);
  153. $this->assertFalse($result);
  154. $this->assertEqual($Request->_request['ak'],'es/post');
  155. $this->assertEqual($Request->ak,'es/post');
  156. $Request->ak = 'spain/people';
  157. $Request->_request['ak'] = 'spain/people';
  158. unset($Request->lang);
  159. $result = $this->LocaleManager->getLangFromUrl($Request);
  160. $expected = 'spain';
  161. $this->assertEqual($result, $expected);
  162. $this->assertEqual($Request->_request['ak'],'people');
  163. $this->assertEqual($Request->ak,'people');
  164. //Falta devolver IDIOMA y no alias y cargar $request->lang
  165. }
  166. public function Test_of_getLocaleFromAlias()
  167. {
  168. $this->LocaleManager->available_locales = $this->LocaleManager->_parseLocaleConfigString('es, en, fr (france)');
  169. $result = $this->LocaleManager->getLocaleFromAlias('france');
  170. $expected = 'fr';
  171. $this->assertEqual($result,$expected);
  172. $result = $this->LocaleManager->getLocaleFromAlias('spain');
  173. $this->assertFalse($result);
  174. }
  175. public function test_locale_setting_getting_deleting_methods()
  176. {
  177. !defined('AK_TEST_TRANSLATIONS')?define('AK_TEST_TRANSLATIONS',true):null;
  178. $translation_key=Ak::randomString(8);
  179. $namespace = Ak::randomString(8);
  180. $translation=Ak::t($translation_key,null,$namespace);
  181. $this->assertEqual($translation_key,$translation);
  182. AkLocaleManager::updateLocaleFiles();
  183. $dictionary = AkLocaleManager::getDictionary(AK_FRAMEWORK_LANGUAGE,$namespace);
  184. $this->assertEqual(array($translation_key=>$translation_key),$dictionary);
  185. $dictionary[$translation_key] = 'Spanish';
  186. AkLocaleManager::setDictionary($dictionary,'es',$namespace);
  187. $dictionary = AkLocaleManager::getDictionary('es',$namespace);
  188. $this->assertEqual(array($translation_key=>'Spanish'),$dictionary);
  189. Ak::t('dummy',null,$namespace);
  190. AkLocaleManager::updateLocaleFiles();
  191. $dictionary = AkLocaleManager::getDictionary(AK_FRAMEWORK_LANGUAGE,$namespace);
  192. $this->assertEqual(array($translation_key=>$translation_key,'dummy'=>'dummy'),$dictionary);
  193. $this->assertTrue(AkLocaleManager::deleteDictionary(AK_FRAMEWORK_LANGUAGE,$namespace));
  194. $this->assertEqual(array(),AkLocaleManager::getDictionary(AK_FRAMEWORK_LANGUAGE,$namespace));
  195. }
  196. public function test_framework_config_locale_update()
  197. {
  198. $langs=Ak::langs();
  199. $translation_key=Ak::randomString(8);
  200. $this->assertEqual(Ak::t($translation_key),$translation_key);
  201. AkLocaleManager::updateLocaleFiles();
  202. list($locales,$core_dictionary) = AkLocaleManager::getCoreDictionary(AK_FRAMEWORK_LANGUAGE);
  203. $this->assertTrue(isset($core_dictionary[$translation_key]));
  204. foreach($langs as $lang) {
  205. list($locales,$core_dictionary) = AkLocaleManager::getCoreDictionary($lang);
  206. $this->assertTrue(isset($core_dictionary[$translation_key]));
  207. }
  208. }
  209. }
  210. ak_test('Test_of_AkLocaleManager_Class');
  211. ?>