Commit a4f93f991bb8fab912de74566fa9e3c172a3f9aa

Authored by Rodrigo Souto
1 parent 9ef330cf

[language-selection] Verifing available languages

app/models/environment.rb
... ... @@ -767,6 +767,11 @@ class Environment < ActiveRecord::Base
767 767 portal_community ? portal_community.image_galleries : []
768 768 end
769 769  
  770 + serialize :languages
  771 +
  772 + validate :default_language_available
  773 + validate :languages_available
  774 +
770 775 def locales
771 776 languages || Noosfero.locales
772 777 end
... ... @@ -783,4 +788,23 @@ class Environment < ActiveRecord::Base
783 788 end
784 789 locales_list
785 790 end
  791 +
  792 + private
  793 +
  794 + def default_language_available
  795 + if default_language.present? && !available_locales.include?(default_language)
  796 + errors.add(:default_language, _('is not available.'))
  797 + end
  798 + end
  799 +
  800 + def languages_available
  801 + if languages.present?
  802 + languages.each do |key, value|
  803 + if Noosfero.locales[key] != value
  804 + errors.add(:languages, _('have unsupported languages.'))
  805 + break
  806 + end
  807 + end
  808 + end
  809 + end
786 810 end
... ...
test/unit/environment_test.rb
... ... @@ -1221,6 +1221,18 @@ class EnvironmentTest < ActiveSupport::TestCase
1221 1221 assert_not_includes environment.licenses, l3
1222 1222 end
1223 1223  
  1224 + should 'allow only default languages there are defined in available locales' do
  1225 + environment = Environment.default
  1226 + environment.stubs(:available_locales).returns(['en'])
  1227 + environment.default_language = 'pt'
  1228 + environment.valid?
  1229 + assert environment.errors.invalid?(:default_language)
  1230 +
  1231 + environment.default_language = 'en'
  1232 + environment.valid?
  1233 + assert !environment.errors.invalid?(:default_language)
  1234 + end
  1235 +
1224 1236 should 'define default locale or use the config default locale' do
1225 1237 environment = Environment.default
1226 1238 environment.default_language = nil
... ... @@ -1232,6 +1244,23 @@ class EnvironmentTest < ActiveSupport::TestCase
1232 1244 assert_equal environment.default_language, environment.default_locale
1233 1245 end
1234 1246  
  1247 + should 'allow only languages there are defined in locales' do
  1248 + environment = Environment.default
  1249 + Noosfero.stubs(:locales).returns({'en' => 'English'})
  1250 +
  1251 + environment.languages = {'pt' => 'Português'}
  1252 + environment.valid?
  1253 + assert environment.errors.invalid?(:languages)
  1254 +
  1255 + environment.languages = {'en' => 'Bli blo'}
  1256 + environment.valid?
  1257 + assert environment.errors.invalid?(:languages)
  1258 +
  1259 + environment.languages = {'en' => 'English'}
  1260 + environment.valid?
  1261 + assert !environment.errors.invalid?(:languages)
  1262 + end
  1263 +
1235 1264 should 'define locales or use the config locales' do
1236 1265 environment = Environment.default
1237 1266 environment.languages = nil
... ...