From cb16e304d333aa1d7ff93b4197df7231e815a230 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Fri, 24 Aug 2012 19:31:38 +0000 Subject: [PATCH] [language-selection] Making languages only save the language abbreviation --- app/models/environment.rb | 10 +++++++--- test/unit/environment_test.rb | 16 ++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/models/environment.rb b/app/models/environment.rb index 190860f..f82b5a4 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -777,7 +777,11 @@ class Environment < ActiveRecord::Base validate :languages_available def locales - languages || Noosfero.locales + if languages.present? + languages.inject({}) {|r, l| r.merge({l => Noosfero.locales[l]})} + else + Noosfero.locales + end end def default_locale @@ -803,8 +807,8 @@ class Environment < ActiveRecord::Base def languages_available if languages.present? - languages.each do |key, value| - if Noosfero.locales[key] != value + languages.each do |language| + if !Noosfero.available_locales.include?(language) errors.add(:languages, _('have unsupported languages.')) break end diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index c9579dd..58146a7 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -1246,17 +1246,12 @@ class EnvironmentTest < ActiveSupport::TestCase should 'allow only languages there are defined in locales' do environment = Environment.default - Noosfero.stubs(:locales).returns({'en' => 'English'}) - environment.languages = {'pt' => 'Português'} + environment.languages = ['zz'] environment.valid? assert environment.errors.invalid?(:languages) - environment.languages = {'en' => 'Bli blo'} - environment.valid? - assert environment.errors.invalid?(:languages) - - environment.languages = {'en' => 'English'} + environment.languages = ['en'] environment.valid? assert !environment.errors.invalid?(:languages) end @@ -1267,9 +1262,10 @@ class EnvironmentTest < ActiveSupport::TestCase environment.save! assert_equal Noosfero.locales, environment.locales - environment.languages = {'en' => 'English'} + environment.languages = ['en'] environment.save! - assert_equal environment.languages, environment.locales + hash = {'en' => 'English'} + assert_equal hash, environment.locales end should 'define available_locales or use the config available_locales' do @@ -1278,7 +1274,7 @@ class EnvironmentTest < ActiveSupport::TestCase environment.save! assert_equal Noosfero.available_locales, environment.available_locales - environment.languages = {'pt' => 'Português', 'en' => 'English'} + environment.languages = ['pt', 'en'] environment.save! assert_equal ['en', 'pt'], environment.available_locales end -- libgit2 0.21.2