comparison test/unit/lib/redmine/i18n_test.rb @ 1115:433d4f72a19b redmine-2.2

Update to Redmine SVN revision 11137 on 2.2-stable branch
author Chris Cannam
date Mon, 07 Jan 2013 12:01:42 +0000
parents cbce1fd3b1b7
children bb32da3bea34 622f24f53b42 261b3d9a4903
comparison
equal deleted inserted replaced
929:5f33065ddc4b 1115:433d4f72a19b
1 # Redmine - project management software 1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang 2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 # 3 #
4 # This program is free software; you can redistribute it and/or 4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License 5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2 6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version. 7 # of the License, or (at your option) any later version.
20 class Redmine::I18nTest < ActiveSupport::TestCase 20 class Redmine::I18nTest < ActiveSupport::TestCase
21 include Redmine::I18n 21 include Redmine::I18n
22 include ActionView::Helpers::NumberHelper 22 include ActionView::Helpers::NumberHelper
23 23
24 def setup 24 def setup
25 @hook_module = Redmine::Hook 25 User.current.language = nil
26 end
27
28 def teardown
29 set_language_if_valid 'en'
26 end 30 end
27 31
28 def test_date_format_default 32 def test_date_format_default
29 set_language_if_valid 'en' 33 set_language_if_valid 'en'
30 today = Date.today 34 today = Date.today
35 def test_date_format 39 def test_date_format
36 set_language_if_valid 'en' 40 set_language_if_valid 'en'
37 today = Date.today 41 today = Date.today
38 Setting.date_format = '%d %m %Y' 42 Setting.date_format = '%d %m %Y'
39 assert_equal today.strftime('%d %m %Y'), format_date(today) 43 assert_equal today.strftime('%d %m %Y'), format_date(today)
44 end
45
46 def test_date_format_default_with_user_locale
47 set_language_if_valid 'es'
48 today = now = Time.parse('2011-02-20 14:00:00')
49 Setting.date_format = '%d %B %Y'
50 User.current.language = 'fr'
51 s1 = "20 f\xc3\xa9vrier 2011"
52 s1.force_encoding("UTF-8") if s1.respond_to?(:force_encoding)
53 assert_equal s1, format_date(today)
54 User.current.language = nil
55 assert_equal '20 Febrero 2011', format_date(today)
40 end 56 end
41 57
42 def test_date_and_time_for_each_language 58 def test_date_and_time_for_each_language
43 Setting.date_format = '' 59 Setting.date_format = ''
44 valid_languages.each do |lang| 60 valid_languages.each do |lang|
58 assert l('date.month_names').is_a?(Array) 74 assert l('date.month_names').is_a?(Array)
59 assert_equal 13, l('date.month_names').size 75 assert_equal 13, l('date.month_names').size
60 end 76 end
61 end 77 end
62 78
79 def test_time_for_each_zone
80 ActiveSupport::TimeZone.all.each do |zone|
81 User.current.stubs(:time_zone).returns(zone.name)
82 assert_nothing_raised "#{zone} failure" do
83 format_time(Time.now)
84 end
85 end
86 end
87
63 def test_time_format 88 def test_time_format
64 set_language_if_valid 'en' 89 set_language_if_valid 'en'
65 now = Time.parse('2011-02-20 15:45:22') 90 now = Time.parse('2011-02-20 15:45:22')
66 with_settings :time_format => '%H:%M' do 91 with_settings :time_format => '%H:%M' do
67 with_settings :date_format => '' do 92 with_settings :date_format => '' do
88 assert_equal '03:45 pm', format_time(now, false) 113 assert_equal '03:45 pm', format_time(now, false)
89 end 114 end
90 end 115 end
91 end 116 end
92 117
118 def test_time_format_default_with_user_locale
119 set_language_if_valid 'en'
120 User.current.language = 'fr'
121 now = Time.parse('2011-02-20 15:45:22')
122 with_settings :time_format => '' do
123 with_settings :date_format => '' do
124 assert_equal '20/02/2011 15:45', format_time(now)
125 assert_equal '15:45', format_time(now, false)
126 end
127 with_settings :date_format => '%Y-%m-%d' do
128 assert_equal '2011-02-20 15:45', format_time(now)
129 assert_equal '15:45', format_time(now, false)
130 end
131 end
132 end
133
93 def test_time_format 134 def test_time_format
94 set_language_if_valid 'en' 135 set_language_if_valid 'en'
95 now = Time.now 136 now = Time.now
96 Setting.date_format = '%d %m %Y' 137 Setting.date_format = '%d %m %Y'
97 Setting.time_format = '%H %M' 138 Setting.time_format = '%H %M'
110 151
111 def test_number_to_human_size_for_each_language 152 def test_number_to_human_size_for_each_language
112 valid_languages.each do |lang| 153 valid_languages.each do |lang|
113 set_language_if_valid lang 154 set_language_if_valid lang
114 assert_nothing_raised "#{lang} failure" do 155 assert_nothing_raised "#{lang} failure" do
115 number_to_human_size(1024*1024*4) 156 size = number_to_human_size(257024)
116 end 157 assert_match /251/, size
117 end 158 end
159 end
160 end
161
162 def test_day_name
163 set_language_if_valid 'fr'
164 assert_equal 'dimanche', day_name(0)
165 assert_equal 'jeudi', day_name(4)
166 end
167
168 def test_day_letter
169 set_language_if_valid 'fr'
170 assert_equal 'd', day_letter(0)
171 assert_equal 'j', day_letter(4)
172 end
173
174 def test_number_to_currency_for_each_language
175 valid_languages.each do |lang|
176 set_language_if_valid lang
177 assert_nothing_raised "#{lang} failure" do
178 number_to_currency(-1000.2)
179 end
180 end
181 end
182
183 def test_number_to_currency_default
184 set_language_if_valid 'bs'
185 assert_equal "KM -1000,20", number_to_currency(-1000.2)
186 set_language_if_valid 'de'
187 euro_sign = "\xe2\x82\xac"
188 euro_sign.force_encoding('UTF-8') if euro_sign.respond_to?(:force_encoding)
189 assert_equal "-1000,20 #{euro_sign}", number_to_currency(-1000.2)
118 end 190 end
119 191
120 def test_valid_languages 192 def test_valid_languages
121 assert valid_languages.is_a?(Array) 193 assert valid_languages.is_a?(Array)
122 assert valid_languages.first.is_a?(Symbol) 194 assert valid_languages.first.is_a?(Symbol)
195 end
196
197 def test_languages_options
198 options = languages_options
199
200 assert options.is_a?(Array)
201 assert_equal valid_languages.size, options.size
202 assert_nil options.detect {|option| !option.is_a?(Array)}
203 assert_nil options.detect {|option| option.size != 2}
204 assert_nil options.detect {|option| !option.first.is_a?(String) || !option.last.is_a?(String)}
205 assert_include ["English", "en"], options
206 end
207
208 def test_locales_validness
209 lang_files_count = Dir["#{Rails.root}/config/locales/*.yml"].size
210 assert_equal lang_files_count, valid_languages.size
211 valid_languages.each do |lang|
212 assert set_language_if_valid(lang)
213 end
214 set_language_if_valid('en')
123 end 215 end
124 216
125 def test_valid_language 217 def test_valid_language
126 to_test = {'fr' => :fr, 218 to_test = {'fr' => :fr,
127 'Fr' => :fr, 219 'Fr' => :fr,
154 str_ja_yes.force_encoding('UTF-8') 246 str_ja_yes.force_encoding('UTF-8')
155 assert_equal "UTF-8", i18n_ja_yes.encoding.to_s 247 assert_equal "UTF-8", i18n_ja_yes.encoding.to_s
156 end 248 end
157 assert_equal str_ja_yes, i18n_ja_yes 249 assert_equal str_ja_yes, i18n_ja_yes
158 end 250 end
251
252 def test_traditional_chinese_locale
253 set_language_if_valid 'zh-TW'
254 str_tw = "Traditional Chinese (\xe7\xb9\x81\xe9\xab\x94\xe4\xb8\xad\xe6\x96\x87)"
255 if str_tw.respond_to?(:force_encoding)
256 str_tw.force_encoding('UTF-8')
257 end
258 assert_equal str_tw, l(:general_lang_name)
259 end
260
261 def test_french_locale
262 set_language_if_valid 'fr'
263 str_fr = "Fran\xc3\xa7ais"
264 if str_fr.respond_to?(:force_encoding)
265 str_fr.force_encoding('UTF-8')
266 end
267 assert_equal str_fr, l(:general_lang_name)
268 end
159 end 269 end