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 777 validate :languages_available
778 778  
779 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 785 end
782 786  
783 787 def default_locale
... ... @@ -803,8 +807,8 @@ class Environment < ActiveRecord::Base
803 807  
804 808 def languages_available
805 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 812 errors.add(:languages, _('have unsupported languages.'))
809 813 break
810 814 end
... ...
test/unit/environment_test.rb
... ... @@ -1246,17 +1246,12 @@ class EnvironmentTest < ActiveSupport::TestCase
1246 1246  
1247 1247 should 'allow only languages there are defined in locales' do
1248 1248 environment = Environment.default
1249   - Noosfero.stubs(:locales).returns({'en' => 'English'})
1250 1249  
1251   - environment.languages = {'pt' => 'Português'}
  1250 + environment.languages = ['zz']
1252 1251 environment.valid?
1253 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 1255 environment.valid?
1261 1256 assert !environment.errors.invalid?(:languages)
1262 1257 end
... ... @@ -1267,9 +1262,10 @@ class EnvironmentTest < ActiveSupport::TestCase
1267 1262 environment.save!
1268 1263 assert_equal Noosfero.locales, environment.locales
1269 1264  
1270   - environment.languages = {'en' => 'English'}
  1265 + environment.languages = ['en']
1271 1266 environment.save!
1272   - assert_equal environment.languages, environment.locales
  1267 + hash = {'en' => 'English'}
  1268 + assert_equal hash, environment.locales
1273 1269 end
1274 1270  
1275 1271 should 'define available_locales or use the config available_locales' do
... ... @@ -1278,7 +1274,7 @@ class EnvironmentTest < ActiveSupport::TestCase
1278 1274 environment.save!
1279 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 1278 environment.save!
1283 1279 assert_equal ['en', 'pt'], environment.available_locales
1284 1280 end
... ...