Commit cb16e304d333aa1d7ff93b4197df7231e815a230

Authored by Rodrigo Souto
1 parent 407767bb

[language-selection] Making languages only save the language abbreviation

app/models/environment.rb
@@ -777,7 +777,11 @@ class Environment < ActiveRecord::Base @@ -777,7 +777,11 @@ class Environment < ActiveRecord::Base
777 validate :languages_available 777 validate :languages_available
778 778
779 def locales 779 def locales
780 - languages || Noosfero.locales 780 + if languages.present?
  781 + languages.inject({}) {|r, l| r.merge({l => Noosfero.locales[l]})}
  782 + else
  783 + Noosfero.locales
  784 + end
781 end 785 end
782 786
783 def default_locale 787 def default_locale
@@ -803,8 +807,8 @@ class Environment < ActiveRecord::Base @@ -803,8 +807,8 @@ class Environment < ActiveRecord::Base
803 807
804 def languages_available 808 def languages_available
805 if languages.present? 809 if languages.present?
806 - languages.each do |key, value|  
807 - if Noosfero.locales[key] != value 810 + languages.each do |language|
  811 + if !Noosfero.available_locales.include?(language)
808 errors.add(:languages, _('have unsupported languages.')) 812 errors.add(:languages, _('have unsupported languages.'))
809 break 813 break
810 end 814 end
test/unit/environment_test.rb
@@ -1246,17 +1246,12 @@ class EnvironmentTest < ActiveSupport::TestCase @@ -1246,17 +1246,12 @@ class EnvironmentTest < ActiveSupport::TestCase
1246 1246
1247 should 'allow only languages there are defined in locales' do 1247 should 'allow only languages there are defined in locales' do
1248 environment = Environment.default 1248 environment = Environment.default
1249 - Noosfero.stubs(:locales).returns({'en' => 'English'})  
1250 1249
1251 - environment.languages = {'pt' => 'Português'} 1250 + environment.languages = ['zz']
1252 environment.valid? 1251 environment.valid?
1253 assert environment.errors.invalid?(:languages) 1252 assert environment.errors.invalid?(:languages)
1254 1253
1255 - environment.languages = {'en' => 'Bli blo'}  
1256 - environment.valid?  
1257 - assert environment.errors.invalid?(:languages)  
1258 -  
1259 - environment.languages = {'en' => 'English'} 1254 + environment.languages = ['en']
1260 environment.valid? 1255 environment.valid?
1261 assert !environment.errors.invalid?(:languages) 1256 assert !environment.errors.invalid?(:languages)
1262 end 1257 end
@@ -1267,9 +1262,10 @@ class EnvironmentTest < ActiveSupport::TestCase @@ -1267,9 +1262,10 @@ class EnvironmentTest < ActiveSupport::TestCase
1267 environment.save! 1262 environment.save!
1268 assert_equal Noosfero.locales, environment.locales 1263 assert_equal Noosfero.locales, environment.locales
1269 1264
1270 - environment.languages = {'en' => 'English'} 1265 + environment.languages = ['en']
1271 environment.save! 1266 environment.save!
1272 - assert_equal environment.languages, environment.locales 1267 + hash = {'en' => 'English'}
  1268 + assert_equal hash, environment.locales
1273 end 1269 end
1274 1270
1275 should 'define available_locales or use the config available_locales' do 1271 should 'define available_locales or use the config available_locales' do
@@ -1278,7 +1274,7 @@ class EnvironmentTest < ActiveSupport::TestCase @@ -1278,7 +1274,7 @@ class EnvironmentTest < ActiveSupport::TestCase
1278 environment.save! 1274 environment.save!
1279 assert_equal Noosfero.available_locales, environment.available_locales 1275 assert_equal Noosfero.available_locales, environment.available_locales
1280 1276
1281 - environment.languages = {'pt' => 'Português', 'en' => 'English'} 1277 + environment.languages = ['pt', 'en']
1282 environment.save! 1278 environment.save!
1283 assert_equal ['en', 'pt'], environment.available_locales 1279 assert_equal ['en', 'pt'], environment.available_locales
1284 end 1280 end