From a4f93f991bb8fab912de74566fa9e3c172a3f9aa Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Thu, 23 Aug 2012 23:53:51 +0000 Subject: [PATCH] [language-selection] Verifing available languages --- app/models/environment.rb | 24 ++++++++++++++++++++++++ test/unit/environment_test.rb | 29 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 0 deletions(-) diff --git a/app/models/environment.rb b/app/models/environment.rb index 8d7b43c..3e2df32 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -767,6 +767,11 @@ class Environment < ActiveRecord::Base portal_community ? portal_community.image_galleries : [] end + serialize :languages + + validate :default_language_available + validate :languages_available + def locales languages || Noosfero.locales end @@ -783,4 +788,23 @@ class Environment < ActiveRecord::Base end locales_list end + + private + + def default_language_available + if default_language.present? && !available_locales.include?(default_language) + errors.add(:default_language, _('is not available.')) + end + end + + def languages_available + if languages.present? + languages.each do |key, value| + if Noosfero.locales[key] != value + errors.add(:languages, _('have unsupported languages.')) + break + end + end + end + end end diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index 8a67fbf..c9579dd 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -1221,6 +1221,18 @@ class EnvironmentTest < ActiveSupport::TestCase assert_not_includes environment.licenses, l3 end + should 'allow only default languages there are defined in available locales' do + environment = Environment.default + environment.stubs(:available_locales).returns(['en']) + environment.default_language = 'pt' + environment.valid? + assert environment.errors.invalid?(:default_language) + + environment.default_language = 'en' + environment.valid? + assert !environment.errors.invalid?(:default_language) + end + should 'define default locale or use the config default locale' do environment = Environment.default environment.default_language = nil @@ -1232,6 +1244,23 @@ class EnvironmentTest < ActiveSupport::TestCase assert_equal environment.default_language, environment.default_locale end + 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.valid? + assert environment.errors.invalid?(:languages) + + environment.languages = {'en' => 'Bli blo'} + environment.valid? + assert environment.errors.invalid?(:languages) + + environment.languages = {'en' => 'English'} + environment.valid? + assert !environment.errors.invalid?(:languages) + end + should 'define locales or use the config locales' do environment = Environment.default environment.languages = nil -- libgit2 0.21.2