PageRenderTime 51ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/plugins/click_to_globalize/test/click_to_globalize_test.rb

https://github.com/ischroedi/petracommunity
Ruby | 342 lines | 261 code | 75 blank | 6 comment | 2 complexity | 6efb194fe0b445a8da9e91047c5d8cd6 MD5 | raw file
  1. require 'test/test_helper'
  2. require 'test/unit'
  3. require 'vendor/plugins/click_to_globalize/test/test_helper'
  4. class ClickToGlobalizeController < ApplicationController
  5. def rescue_action(e) raise e end;
  6. def index
  7. Locale.set(params[:locale])
  8. hello_world = Translation.find_by_tr_key_and_language_id(params[:key], params[:language_id])
  9. @greet = hello_world.tr_key.t
  10. render :nothing => true, :status => 200
  11. end
  12. end
  13. module ClickToGlobalizeHelper; end
  14. ApplicationHelper.class_eval do
  15. def controller
  16. @controller = ClickToGlobalizeController.new
  17. @controller
  18. end
  19. end
  20. class ClickToGlobalizeTest < Test::Unit::TestCase
  21. include Globalize
  22. include ApplicationHelper
  23. def setup
  24. assert_nil(Locale.send(:class_variable_set, :@@active, nil))
  25. # TODO load w/ #inject
  26. @hello_world = Translation.find(1)
  27. @ciao_mondo = Translation.find(2)
  28. @good_morning = Translation.find(3)
  29. @default_locale = Locale.new('en-US')
  30. @italian_locale = Locale.new('it-IT')
  31. @partial_path = 'shared/_click_to_globalize'
  32. @base_language = {:english => 'en-US'}
  33. @languages = {:english => 'en-US', :italian => 'it-IT'}
  34. @new_languages = {:spanish => 'es-ES', :french => 'fr-FR'}
  35. @inline = {:textile => 'textilize_without_paragraph( @formatted_value )',
  36. :markdown => 'markdown( @formatted_value )',
  37. :other => '@formatted_value'}
  38. @locale_controller = LocaleController.new
  39. @controller = ClickToGlobalizeController.new
  40. @request = ActionController::TestRequest.new
  41. @response = ActionController::TestResponse.new
  42. end
  43. # LOCALE_OBSERVER
  44. def test_locale_observer_init
  45. lo = LocaleObserver.new
  46. assert_not_nil(lo)
  47. assert_kind_of(LocaleObserver, lo)
  48. assert_not_nil(lo.translations)
  49. assert(lo.translations.empty?)
  50. assert_kind_of(Hash, lo.translations)
  51. end
  52. def test_locale_observer_update
  53. lo = LocaleObserver.new
  54. lo.update(nil, nil)
  55. assert_equal({nil => nil}, lo.translations)
  56. assert_nil(lo.translations[nil])
  57. lo.instance_variable_set(:@translations, {})
  58. lo.update(@hello_world.tr_key, @hello_world.text)
  59. assert_equal({@hello_world.tr_key => @hello_world.text}, lo.translations)
  60. assert_equal(@hello_world.text, lo.translations[@hello_world.tr_key])
  61. lo.update(@ciao_mondo.tr_key, @ciao_mondo.text)
  62. assert_equal({@ciao_mondo.tr_key => @ciao_mondo.text}, lo.translations)
  63. assert_equal(@ciao_mondo.text, lo.translations[@ciao_mondo.tr_key])
  64. lo.update(@good_morning.tr_key, @good_morning.text)
  65. assert_equal({@ciao_mondo.tr_key => @ciao_mondo.text, @good_morning.tr_key => @good_morning.text}, lo.translations)
  66. assert_equal(@good_morning.text, lo.translations[@good_morning.tr_key])
  67. end
  68. def test_locale_observer_missing_translations_setter
  69. lo = LocaleObserver.new
  70. assert_raise(NoMethodError) { lo.translations = {} }
  71. end
  72. # LOCALE
  73. def test_locale_active
  74. assert_nil(Locale.send(:class_variable_get, :@@active))
  75. base_language_code = Locale.send(:class_variable_get, :@@base_language_code)
  76. assert_not_nil(base_language_code)
  77. assert_kind_of(RFC_3066, base_language_code)
  78. assert_not_nil(base_language_code.locale)
  79. assert_kind_of(String, base_language_code.locale)
  80. assert_equal(@default_locale.code, base_language_code.locale)
  81. assert_not_nil(Locale.active)
  82. assert_not_nil(Locale.send(:class_variable_get, :@@active))
  83. assert_kind_of(Locale, Locale.active)
  84. assert(Locale.active?)
  85. assert_kind_of(Country, Locale.country)
  86. assert_equal(@default_locale.country.code, Locale.country.code)
  87. assert_equal(Locale.base_language, Locale.active.language)
  88. assert_equal(@default_locale.language.code, Locale.language_code)
  89. assert_equal(@default_locale.code, Locale.active.code)
  90. end
  91. def test_locale_set
  92. assert_nil(Locale.send(:class_variable_get, :@@active))
  93. Locale.set(@italian_locale.code)
  94. assert_not_nil(Locale.send(:class_variable_get, :@@active))
  95. assert_not_nil(Locale.active)
  96. assert_not_nil(Locale.country)
  97. assert_equal(@italian_locale.country.code, Locale.country.code)
  98. assert_not_equal(Locale.base_language, Locale.active.language)
  99. assert_equal(@italian_locale.language.code, Locale.language_code)
  100. assert_equal(@italian_locale.code, Locale.active.code)
  101. end
  102. def test_locale_method_aliases
  103. assert(Locale.respond_to?(:__translate))
  104. assert(Locale.respond_to?(:translate))
  105. end
  106. def test_locale_observers
  107. assert_kind_of(Set, Locale.observers)
  108. lo = LocaleObserver.new
  109. assert(Locale.observers.empty?)
  110. Locale.add_observer(lo)
  111. assert_equal(1, Locale.observers.size)
  112. Locale.add_observer(lo) #re-add
  113. assert_equal(1, Locale.observers.size)
  114. loo = lo.dup
  115. Locale.add_observer(loo)
  116. assert_equal(2, Locale.observers.size)
  117. Locale.notify_observers(@hello_world.tr_key, @hello_world.text)
  118. Locale.observers.each do |observer|
  119. assert_not_nil(observer.translations)
  120. assert_equal(1, observer.translations.size)
  121. assert_equal(@hello_world.text, observer.translations[@hello_world.tr_key])
  122. end
  123. Locale.notify_observers(@ciao_mondo.tr_key, @ciao_mondo.text)
  124. Locale.observers.each do |observer|
  125. assert_not_nil(observer.translations)
  126. assert_equal(1, observer.translations.size)
  127. assert_equal(@ciao_mondo.text, observer.translations[@ciao_mondo.tr_key])
  128. end
  129. Locale.remove_observer(loo)
  130. assert_equal(1, Locale.observers.size)
  131. Locale.remove_observer(loo) #delete again
  132. assert_equal(1, Locale.observers.size)
  133. Locale.remove_observer(lo)
  134. assert(Locale.observers.empty?)
  135. end
  136. def test_locale_notify_with_nil_observer
  137. assert(Locale.observers.empty?)
  138. Locale.add_observer(nil)
  139. assert_equal(1, Locale.observers.size)
  140. assert_raise(NoMethodError) { Locale.notify_observers(@hello_world.tr_key, @hello_world.text) }
  141. Locale.remove_observer(nil)
  142. assert(Locale.observers.empty?)
  143. assert_nothing_raised(NoMethodError) { Locale.notify_observers(@hello_world.tr_key, @hello_world.text) }
  144. end
  145. def test_locale_translate
  146. assert(Locale.observers.empty?)
  147. lo = LocaleObserver.new
  148. loo = lo.dup
  149. Locale.add_observer(lo)
  150. Locale.add_observer(loo)
  151. assert_equal(2, Locale.observers.size)
  152. assert_not_nil(Locale.active)
  153. assert_equal(@hello_world.text, @hello_world.tr_key.t)
  154. Locale.observers.each do |observer|
  155. assert_not_nil(observer.translations)
  156. assert_equal(1, observer.translations.size)
  157. assert_equal(@hello_world.text, observer.translations[@hello_world.tr_key])
  158. end
  159. end
  160. def test_formatting_set
  161. assert_nothing_raised(ArgumentError) { Locale.formatting = :textile }
  162. assert_equal(:textile, Locale.formatting)
  163. assert_nothing_raised(ArgumentError) { Locale.formatting = :markdown }
  164. assert_equal(:markdown, Locale.formatting)
  165. assert_raise(NoMethodError) { Locale.formatting = nil }
  166. assert_raise(ArgumentError) { Locale.formatting = :unknown }
  167. end
  168. def test_formatting_method
  169. Locale.formatting = :textile
  170. assert_equal(:textilize_without_paragraph, Locale.formatting_method)
  171. Locale.formatting = :markdown
  172. assert_equal(:markdown, Locale.formatting_method)
  173. end
  174. def test_textile
  175. if Object.const_defined?(:RedCloth)
  176. assert(Locale.textile?)
  177. else
  178. assert(!Locale.textile?)
  179. end
  180. end
  181. def test_markdown
  182. if Object.const_defined?(:BlueCloth)
  183. assert(Locale.markdown?)
  184. else
  185. assert(!Locale.markdown?)
  186. end
  187. end
  188. # HELPER
  189. def test_helper_partial
  190. assert_equal(@partial_path, Helper.send(:class_variable_get, :@@partial))
  191. end
  192. def test_helper_in_place_globalizer
  193. assert false
  194. end
  195. def test_helper_languages
  196. ApplicationController.languages = @languages
  197. assert_equal(@languages, languages)
  198. end
  199. def test_helper_languages_menu
  200. assert false
  201. end
  202. # CONTROLLER
  203. def test_controller_globalize
  204. assert(@controller.class.globalize?)
  205. end
  206. def test_languages_set
  207. assert_not_nil(ApplicationController.languages)
  208. ApplicationController.languages = nil
  209. assert_equal(@languages, ApplicationController.languages)
  210. ApplicationController.languages = @languages
  211. assert_not_nil(ApplicationController.languages)
  212. assert_kind_of(Hash, ApplicationController.languages)
  213. assert_equal(@languages, ApplicationController.languages)
  214. ApplicationController.languages = @new_languages
  215. assert_not_nil(ApplicationController.languages)
  216. assert_kind_of(Hash, ApplicationController.languages)
  217. assert_equal(@new_languages.merge(@base_language), ApplicationController.languages)
  218. ApplicationController.languages = @languages # reassign
  219. assert_equal(@languages, ApplicationController.languages)
  220. ApplicationController.languages = @new_languages
  221. assert_equal(@new_languages.merge(@base_language), ApplicationController.languages)
  222. end
  223. def test_languages
  224. ApplicationController.languages = @languages
  225. languages = ApplicationController.languages
  226. assert_not_nil(languages)
  227. assert_kind_of(Hash, languages)
  228. assert_equal(@languages, languages)
  229. languages.each do |language, locale|
  230. assert_not_nil(language)
  231. assert_kind_of(Symbol, language)
  232. assert_equal(@languages[language], languages[language])
  233. assert_not_nil(locale)
  234. assert_kind_of(String, locale)
  235. end
  236. end
  237. def test_formatting_set
  238. assert_nothing_raised(ArgumentError) { ApplicationController.formatting :textile }
  239. assert_equal(:textile, Locale.formatting)
  240. assert_nothing_raised(ArgumentError) { ApplicationController.formatting :markdown }
  241. assert_equal(:markdown, Locale.formatting)
  242. assert_raise(NoMethodError) { ApplicationController.formatting nil }
  243. assert_raise(ArgumentError) { ApplicationController.formatting :unknown }
  244. end
  245. def test_controller_observe_locale
  246. get :index, {:key => @hello_world.tr_key, :language_id => 1, :locale => @default_locale.code}
  247. assert_response :success
  248. assert_not_nil(@request.session[:__globalize_translations])
  249. assert(!@request.session[:__globalize_translations].empty?)
  250. assert_equal(1, @request.session[:__globalize_translations].size)
  251. assert_equal(@hello_world.text, @request.session[:__globalize_translations][@hello_world.tr_key])
  252. end
  253. # LOCALE_CONTROLLER
  254. def test_check_globalize
  255. assert(@locale_controller.send(:check_globalize))
  256. end
  257. def test_clear_cache
  258. @locale_controller.send(:clear_cache)
  259. assert_equal({}, Locale.send(:class_variable_get, :@@cache))
  260. end
  261. def test_inline
  262. Locale.formatting = :textile
  263. assert_equal(@inline[:textile], @locale_controller.send(:inline))
  264. Locale.formatting = :markdown
  265. assert_equal(@inline[:markdown], @locale_controller.send(:inline))
  266. end
  267. end