Commit 852b2fe7df3ec0e4b17479f14d6f118a6c5146cd

Authored by Rodrigo Souto
1 parent b5d67b0a

[language-selection] Migration and model base

app/controllers/application_controller.rb
@@ -42,9 +42,9 @@ class ApplicationController < ActionController::Base @@ -42,9 +42,9 @@ class ApplicationController < ActionController::Base
42 42
43 before_filter :set_locale 43 before_filter :set_locale
44 def set_locale 44 def set_locale
45 - FastGettext.available_locales = Noosfero.available_locales  
46 - FastGettext.default_locale = Noosfero.default_locale  
47 - FastGettext.locale = (params[:lang] || session[:lang] || Noosfero.default_locale || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en') 45 + FastGettext.available_locales = environment.available_locales
  46 + FastGettext.default_locale = environment.default_locale
  47 + FastGettext.locale = (params[:lang] || session[:lang] || environment.default_locale || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en')
48 I18n.locale = FastGettext.locale 48 I18n.locale = FastGettext.locale
49 if params[:lang] 49 if params[:lang]
50 session[:lang] = params[:lang] 50 session[:lang] = params[:lang]
app/controllers/my_profile/cms_controller.rb
@@ -345,7 +345,7 @@ class CmsController < MyProfileController @@ -345,7 +345,7 @@ class CmsController < MyProfileController
345 end 345 end
346 346
347 def translations 347 def translations
348 - @locales = Noosfero.locales.invert.reject { |name, lang| !@article.possible_translations.include?(lang) } 348 + @locales = environment.locales.invert.reject { |name, lang| !@article.possible_translations.include?(lang) }
349 @selected_locale = @article.language || FastGettext.locale 349 @selected_locale = @article.language || FastGettext.locale
350 end 350 end
351 351
app/helpers/content_viewer_helper.rb
@@ -42,7 +42,7 @@ module ContentViewerHelper @@ -42,7 +42,7 @@ module ContentViewerHelper
42 def article_translations(article) 42 def article_translations(article)
43 unless article.native_translation.translations.empty? 43 unless article.native_translation.translations.empty?
44 links = (article.native_translation.translations + [article.native_translation]).map do |translation| 44 links = (article.native_translation.translations + [article.native_translation]).map do |translation|
45 - { Noosfero.locales[translation.language] => { :href => url_for(translation.url) } } 45 + { article.environment.locales[translation.language] => { :href => url_for(translation.url) } }
46 end 46 end
47 content_tag(:div, link_to(_('Translations'), '#', 47 content_tag(:div, link_to(_('Translations'), '#',
48 :onclick => "toggleSubmenu(this, '#{_('Translations')}', #{links.to_json}); return false", 48 :onclick => "toggleSubmenu(this, '#{_('Translations')}', #{links.to_json}); return false",
app/helpers/language_helper.rb
@@ -13,18 +13,18 @@ module LanguageHelper @@ -13,18 +13,18 @@ module LanguageHelper
13 13
14 alias :calendar_date_select_language :tinymce_language 14 alias :calendar_date_select_language :tinymce_language
15 15
16 - def language_chooser(options = {}) 16 + def language_chooser(environment, options = {})
17 current = language 17 current = language
18 separator = options[:separator] || ' — ' 18 separator = options[:separator] || ' — '
19 19
20 if options[:element] == 'dropdown' 20 if options[:element] == 'dropdown'
21 select_tag('lang', 21 select_tag('lang',
22 - options_for_select(Noosfero.locales.map{|code,name| [name, code]}, current), 22 + options_for_select(environment.locales.map{|code,name| [name, code]}, current),
23 :onchange => "document.location.href= #{url_for(params.merge(:lang => 'LANGUAGE')).inspect}.replace(/LANGUAGE/, this.value) ;", 23 :onchange => "document.location.href= #{url_for(params.merge(:lang => 'LANGUAGE')).inspect}.replace(/LANGUAGE/, this.value) ;",
24 :help => _('The language you choose here is the language used for options, buttons, etc. It does not affect the language of the content created by other users.') 24 :help => _('The language you choose here is the language used for options, buttons, etc. It does not affect the language of the content created by other users.')
25 ) 25 )
26 else 26 else
27 - languages = Noosfero.locales.map do |code,name| 27 + languages = environment.locales.map do |code,name|
28 if code == current 28 if code == current
29 content_tag('strong', name) 29 content_tag('strong', name)
30 else 30 else
app/models/article.rb
@@ -325,14 +325,14 @@ class Article < ActiveRecord::Base @@ -325,14 +325,14 @@ class Article < ActiveRecord::Base
325 end 325 end
326 326
327 def possible_translations 327 def possible_translations
328 - possibilities = Noosfero.locales.keys - self.native_translation.translations(:select => :language).map(&:language) - [self.native_translation.language] 328 + possibilities = environment.locales.keys - self.native_translation.translations(:select => :language).map(&:language) - [self.native_translation.language]
329 possibilities << self.language unless self.language_changed? 329 possibilities << self.language unless self.language_changed?
330 possibilities 330 possibilities
331 end 331 end
332 332
333 def known_language 333 def known_language
334 unless self.language.blank? 334 unless self.language.blank?
335 - errors.add(:language, N_('Language not supported by Noosfero')) unless Noosfero.locales.key?(self.language) 335 + errors.add(:language, N_('Language not supported by the environment.')) unless environment.locales.key?(self.language)
336 end 336 end
337 end 337 end
338 338
app/models/block.rb
@@ -7,6 +7,8 @@ class Block &lt; ActiveRecord::Base @@ -7,6 +7,8 @@ class Block &lt; ActiveRecord::Base
7 # Block-specific stuff 7 # Block-specific stuff
8 include BlockHelper 8 include BlockHelper
9 9
  10 + delegate :environment, :to => :box
  11 +
10 acts_as_list :scope => :box 12 acts_as_list :scope => :box
11 belongs_to :box 13 belongs_to :box
12 14
app/models/box.rb
@@ -2,4 +2,8 @@ class Box &lt; ActiveRecord::Base @@ -2,4 +2,8 @@ class Box &lt; ActiveRecord::Base
2 belongs_to :owner, :polymorphic => true 2 belongs_to :owner, :polymorphic => true
3 acts_as_list :scope => 'owner_id = #{owner_id} and owner_type = \'#{owner_type}\'' 3 acts_as_list :scope => 'owner_id = #{owner_id} and owner_type = \'#{owner_type}\''
4 has_many :blocks, :dependent => :destroy, :order => 'position' 4 has_many :blocks, :dependent => :destroy, :order => 'position'
  5 +
  6 + def environment
  7 + owner.kind_of?(Environment) ? owner : owner.environment
  8 + end
5 end 9 end
app/models/environment.rb
@@ -766,4 +766,21 @@ class Environment &lt; ActiveRecord::Base @@ -766,4 +766,21 @@ class Environment &lt; ActiveRecord::Base
766 def image_galleries 766 def image_galleries
767 portal_community ? portal_community.image_galleries : [] 767 portal_community ? portal_community.image_galleries : []
768 end 768 end
  769 +
  770 + def locales
  771 + languages || Noosfero.locales
  772 + end
  773 +
  774 + def default_locale
  775 + default_language || Noosfero.default_locale
  776 + end
  777 +
  778 + def available_locales
  779 + locales_list = locales.keys
  780 + # move English to the beginning
  781 + if locales_list.include?('en')
  782 + locales_list = ['en'] + (locales_list - ['en']).sort
  783 + end
  784 + locales_list
  785 + end
769 end 786 end
app/sweepers/article_sweeper.rb
@@ -20,7 +20,7 @@ protected @@ -20,7 +20,7 @@ protected
20 BlockSweeper.expire_blocks(blocks) 20 BlockSweeper.expire_blocks(blocks)
21 env = article.profile.environment 21 env = article.profile.environment
22 if env && (env.portal_community == article.profile) 22 if env && (env.portal_community == article.profile)
23 - Noosfero.locales.keys.each do |locale| 23 + article.environment.locales.keys.each do |locale|
24 expire_fragment(env.portal_news_cache_key(locale)) 24 expire_fragment(env.portal_news_cache_key(locale))
25 end 25 end
26 end 26 end
app/sweepers/block_sweeper.rb
@@ -10,7 +10,7 @@ class BlockSweeper &lt; ActiveRecord::Observer @@ -10,7 +10,7 @@ class BlockSweeper &lt; ActiveRecord::Observer
10 regex = '-[a-z]*$' 10 regex = '-[a-z]*$'
11 clean_ck = block.cache_key.gsub(/#{regex}/,'') 11 clean_ck = block.cache_key.gsub(/#{regex}/,'')
12 12
13 - Noosfero.locales.keys.each do |locale| 13 + block.environment.locales.keys.each do |locale|
14 expire_timeout_fragment("#{clean_ck}-#{locale}") 14 expire_timeout_fragment("#{clean_ck}-#{locale}")
15 end 15 end
16 end 16 end
app/views/box_organizer/edit.rhtml
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 <%= label_tag('block_display_never', _("Don't display")) %> 21 <%= label_tag('block_display_never', _("Don't display")) %>
22 </div> 22 </div>
23 23
24 - <%= labelled_form_field(_('Show for:'), select(:block, :language, [ [ _('all languages'), 'all']] + Noosfero.locales.map {|key, value| [value, key]} )) %> 24 + <%= labelled_form_field(_('Show for:'), select(:block, :language, [ [ _('all languages'), 'all']] + environment.locales.map {|key, value| [value, key]} )) %>
25 25
26 <% button_bar do %> 26 <% button_bar do %>
27 <%= submit_button(:save, _('Save')) %> 27 <%= submit_button(:save, _('Save')) %>
app/views/cms/_blog.rhtml
@@ -62,7 +62,7 @@ @@ -62,7 +62,7 @@
62 62
63 <% f.fields_for 'feed', @article.feed do |feed| %> 63 <% f.fields_for 'feed', @article.feed do |feed| %>
64 <%= labelled_form_field(_('Limit of posts in RSS Feed'), feed.select(:limit, [5, 10, 20, 50])) %> 64 <%= labelled_form_field(_('Limit of posts in RSS Feed'), feed.select(:limit, [5, 10, 20, 50])) %>
65 - <%= labelled_form_field(_('Include in RSS Feed only posts from language:'), feed.select(:language, [[_('All'), nil ]] + Noosfero.locales.map { |k,v| [v, k]})) %> 65 + <%= labelled_form_field(_('Include in RSS Feed only posts from language:'), feed.select(:language, [[_('All'), nil ]] + environment.locales.map { |k,v| [v, k]})) %>
66 <% end %> 66 <% end %>
67 67
68 <% f.fields_for 'external_feed_builder', @article.external_feed do |efeed| %> 68 <% f.fields_for 'external_feed_builder', @article.external_feed do |efeed| %>
app/views/cms/_rss_feed.rhtml
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 6
7 <%= required labelled_form_field(_('Limit of articles'), text_field(:article, :limit)) %> 7 <%= required labelled_form_field(_('Limit of articles'), text_field(:article, :limit)) %>
8 8
9 -<%= labelled_form_field(_('Include in RSS Feed only posts from language:'), f.select(:language, [[_('All'), nil ]] + Noosfero.locales.map { |k,v| [v, k]})) %> 9 +<%= labelled_form_field(_('Include in RSS Feed only posts from language:'), f.select(:language, [[_('All'), nil ]] + environment.locales.map { |k,v| [v, k]})) %>
10 10
11 <%= labelled_form_field(_('Use as item description:'), select(:article, :feed_item_description, [ [ _('Article abstract'), 'abstract'], [ _('Article body'), 'body']])) %> 11 <%= labelled_form_field(_('Use as item description:'), select(:article, :feed_item_description, [ [ _('Article abstract'), 'abstract'], [ _('Article body'), 'body']])) %>
12 12
app/views/layouts/application.rhtml
@@ -80,7 +80,7 @@ @@ -80,7 +80,7 @@
80 </div><!-- id='navigation_bar' --> 80 </div><!-- id='navigation_bar' -->
81 81
82 <div id="language-selector"> 82 <div id="language-selector">
83 - <%= language_chooser(:element => 'dropdown') %> 83 + <%= language_chooser(environment, :element => 'dropdown') %>
84 </div> 84 </div>
85 85
86 <div id="user_box"> 86 <div id="user_box">
db/migrate/20120823215007_add_languages_and_default_language_to_environment.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +class AddLanguagesAndDefaultLanguageToEnvironment < ActiveRecord::Migration
  2 + def self.up
  3 + add_column :environments, :languages, :string
  4 + add_column :environments, :default_language, :string
  5 + end
  6 +
  7 + def self.down
  8 + remove_column :environments, :languages
  9 + remove_column :environments, :default_language
  10 + end
  11 +end
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 # 9 #
10 # It's strongly recommended to check this file into your version control system. 10 # It's strongly recommended to check this file into your version control system.
11 11
12 -ActiveRecord::Schema.define(:version => 20120818030329) do 12 +ActiveRecord::Schema.define(:version => 20120823215007) do
13 13
14 create_table "abuse_reports", :force => true do |t| 14 create_table "abuse_reports", :force => true do |t|
15 t.integer "reporter_id" 15 t.integer "reporter_id"
@@ -259,6 +259,8 @@ ActiveRecord::Schema.define(:version =&gt; 20120818030329) do @@ -259,6 +259,8 @@ ActiveRecord::Schema.define(:version =&gt; 20120818030329) do
259 t.datetime "created_at" 259 t.datetime "created_at"
260 t.datetime "updated_at" 260 t.datetime "updated_at"
261 t.integer "reports_lower_bound", :default => 0, :null => false 261 t.integer "reports_lower_bound", :default => 0, :null => false
  262 + t.string "languages"
  263 + t.string "default_language"
262 end 264 end
263 265
264 create_table "external_feeds", :force => true do |t| 266 create_table "external_feeds", :force => true do |t|
public/designs/themes/base/footer.rhtml
@@ -4,4 +4,4 @@ @@ -4,4 +4,4 @@
4 <div id="copyright"> 4 <div id="copyright">
5 <p><%= _('This social network uses <a href="http://noosfero.org/">Noosfero</a>, developed by %s and licensed under the <a href="http://www.gnu.org/licenses/agpl.html">GNU Affero General Public License</a> version 3 or any later version.') % link_to('Colivre', 'http://colivre.coop.br/') %></p> 5 <p><%= _('This social network uses <a href="http://noosfero.org/">Noosfero</a>, developed by %s and licensed under the <a href="http://www.gnu.org/licenses/agpl.html">GNU Affero General Public License</a> version 3 or any later version.') % link_to('Colivre', 'http://colivre.coop.br/') %></p>
6 </div><!-- end id="copyright" --> 6 </div><!-- end id="copyright" -->
7 -<%= language_chooser %> 7 +<%= language_chooser(environment) %>
test/unit/article_test.rb
@@ -1211,7 +1211,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1211,7 +1211,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1211 end 1211 end
1212 1212
1213 should 'validade inclusion of language' do 1213 should 'validade inclusion of language' do
1214 - a = build(Article) 1214 + a = build(Article, :profile_id => fast_create(Profile).id)
1215 a.language = '12' 1215 a.language = '12'
1216 a.valid? 1216 a.valid?
1217 assert a.errors.invalid?(:language) 1217 assert a.errors.invalid?(:language)
@@ -1243,7 +1243,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1243,7 +1243,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1243 end 1243 end
1244 1244
1245 should 'list possible translations' do 1245 should 'list possible translations' do
1246 - native_article = fast_create(Article, :language => 'pt') 1246 + native_article = fast_create(Article, :language => 'pt', :profile_id => fast_create(Profile).id )
1247 article_translation = fast_create(Article, :language => 'en', :translation_of_id => native_article.id) 1247 article_translation = fast_create(Article, :language => 'en', :translation_of_id => native_article.id)
1248 possible_translations = native_article.possible_translations 1248 possible_translations = native_article.possible_translations
1249 assert !possible_translations.include?('en') 1249 assert !possible_translations.include?('en')
@@ -1253,7 +1253,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1253,7 +1253,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1253 should 'verify if translation is already in use' do 1253 should 'verify if translation is already in use' do
1254 native_article = fast_create(Article, :language => 'pt') 1254 native_article = fast_create(Article, :language => 'pt')
1255 article_translation = fast_create(Article, :language => 'en', :translation_of_id => native_article.id) 1255 article_translation = fast_create(Article, :language => 'en', :translation_of_id => native_article.id)
1256 - a = build(Article) 1256 + a = build(Article, :profile => fast_create(Profile))
1257 a.language = 'en' 1257 a.language = 'en'
1258 a.translation_of = native_article 1258 a.translation_of = native_article
1259 a.valid? 1259 a.valid?
@@ -1265,7 +1265,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1265,7 +1265,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1265 1265
1266 should 'verify if native translation is already in use' do 1266 should 'verify if native translation is already in use' do
1267 native_article = fast_create(Article, :language => 'pt') 1267 native_article = fast_create(Article, :language => 'pt')
1268 - a = build(Article) 1268 + a = build(Article, :profile => fast_create(Profile))
1269 a.language = 'pt' 1269 a.language = 'pt'
1270 a.translation_of = native_article 1270 a.translation_of = native_article
1271 a.valid? 1271 a.valid?
@@ -1277,7 +1277,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1277,7 +1277,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1277 1277
1278 should 'translation have a language' do 1278 should 'translation have a language' do
1279 native_article = fast_create(Article, :language => 'pt') 1279 native_article = fast_create(Article, :language => 'pt')
1280 - a = build(Article) 1280 + a = build(Article, :profile_id => fast_create(Profile).id)
1281 a.translation_of = native_article 1281 a.translation_of = native_article
1282 a.valid? 1282 a.valid?
1283 assert a.errors.invalid?(:language) 1283 assert a.errors.invalid?(:language)
@@ -1287,8 +1287,8 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1287,8 +1287,8 @@ class ArticleTest &lt; ActiveSupport::TestCase
1287 end 1287 end
1288 1288
1289 should 'native translation have a language' do 1289 should 'native translation have a language' do
1290 - native_article = fast_create(Article)  
1291 - a = build(Article) 1290 + native_article = fast_create(Article, :profile_id => fast_create(Profile).id )
  1291 + a = build(Article, :profile_id => fast_create(Profile).id)
1292 a.language = 'en' 1292 a.language = 'en'
1293 a.translation_of = native_article 1293 a.translation_of = native_article
1294 a.valid? 1294 a.valid?
@@ -1356,15 +1356,15 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1356,15 +1356,15 @@ class ArticleTest &lt; ActiveSupport::TestCase
1356 end 1356 end
1357 1357
1358 should 'not list own language as a possible translation if language has changed' do 1358 should 'not list own language as a possible translation if language has changed' do
1359 - a = build(Article, :language => 'pt') 1359 + a = build(Article, :language => 'pt', :profile_id => fast_create(Profile).id)
1360 assert !a.possible_translations.include?('pt') 1360 assert !a.possible_translations.include?('pt')
1361 - a = fast_create(Article, :language => 'pt') 1361 + a = fast_create(Article, :language => 'pt', :profile_id => fast_create(Profile).id )
1362 a.language = 'en' 1362 a.language = 'en'
1363 assert !a.possible_translations.include?('en') 1363 assert !a.possible_translations.include?('en')
1364 end 1364 end
1365 1365
1366 should 'list own language as a possible translation if language has not changed' do 1366 should 'list own language as a possible translation if language has not changed' do
1367 - a = fast_create(Article, :language => 'pt') 1367 + a = fast_create(Article, :language => 'pt', :profile_id => fast_create(Profile).id)
1368 assert a.possible_translations.include?('pt') 1368 assert a.possible_translations.include?('pt')
1369 end 1369 end
1370 1370
test/unit/block_test.rb
@@ -107,7 +107,7 @@ class BlockTest &lt; ActiveSupport::TestCase @@ -107,7 +107,7 @@ class BlockTest &lt; ActiveSupport::TestCase
107 107
108 should 'be able to save display setting' do 108 should 'be able to save display setting' do
109 user = create_user('testinguser').person 109 user = create_user('testinguser').person
110 - box = fast_create(Box, :owner_id => user.id) 110 + box = fast_create(Box, :owner_id => user.id, :owner_type => 'Profile')
111 block = create(Block, :display => 'never', :box_id => box.id) 111 block = create(Block, :display => 'never', :box_id => box.id)
112 block.reload 112 block.reload
113 assert_equal 'never', block.display 113 assert_equal 'never', block.display
@@ -115,7 +115,7 @@ class BlockTest &lt; ActiveSupport::TestCase @@ -115,7 +115,7 @@ class BlockTest &lt; ActiveSupport::TestCase
115 115
116 should 'be able to update display setting' do 116 should 'be able to update display setting' do
117 user = create_user('testinguser').person 117 user = create_user('testinguser').person
118 - box = fast_create(Box, :owner_id => user.id) 118 + box = fast_create(Box, :owner_id => user.id, :owner_type => 'Profile')
119 block = create(Block, :display => 'never', :box_id => box.id) 119 block = create(Block, :display => 'never', :box_id => box.id)
120 assert block.update_attributes!(:display => 'always') 120 assert block.update_attributes!(:display => 'always')
121 block.reload 121 block.reload
@@ -148,4 +148,12 @@ class BlockTest &lt; ActiveSupport::TestCase @@ -148,4 +148,12 @@ class BlockTest &lt; ActiveSupport::TestCase
148 assert_equal false, block.visible?(:locale => 'en') 148 assert_equal false, block.visible?(:locale => 'en')
149 end 149 end
150 150
  151 + should 'delegate environment to box' do
  152 + box = fast_create(Box, :owner_id => fast_create(Profile).id)
  153 + block = Block.new(:box => box)
  154 + box.stubs(:environment).returns(Environment.default)
  155 +
  156 + assert_equal box.environment, block.environment
  157 + end
  158 +
151 end 159 end
test/unit/box_test.rb 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class BoxTest < ActiveSupport::TestCase
  4 + should 'retrieve environment based on owner' do
  5 + profile = fast_create(Profile)
  6 + box = fast_create(Box, :owner_id => profile.id, :owner_type => 'Profile')
  7 + assert_equal profile.environment, box.environment
  8 +
  9 + box = fast_create(Box, :owner_id => Environment.default.id, :owner_type => 'Environment')
  10 + assert_equal Environment.default, box.environment
  11 + end
  12 +end
test/unit/environment_test.rb
@@ -1220,4 +1220,37 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -1220,4 +1220,37 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
1220 assert_includes environment.licenses, l2 1220 assert_includes environment.licenses, l2
1221 assert_not_includes environment.licenses, l3 1221 assert_not_includes environment.licenses, l3
1222 end 1222 end
  1223 +
  1224 + should 'define default locale or use the config default locale' do
  1225 + environment = Environment.default
  1226 + environment.default_language = nil
  1227 + environment.save!
  1228 + assert_equal Noosfero.default_locale, environment.default_locale
  1229 +
  1230 + environment.default_language = 'en'
  1231 + environment.save!
  1232 + assert_equal environment.default_language, environment.default_locale
  1233 + end
  1234 +
  1235 + should 'define locales or use the config locales' do
  1236 + environment = Environment.default
  1237 + environment.languages = nil
  1238 + environment.save!
  1239 + assert_equal Noosfero.locales, environment.locales
  1240 +
  1241 + environment.languages = {'en' => 'English'}
  1242 + environment.save!
  1243 + assert_equal environment.languages, environment.locales
  1244 + end
  1245 +
  1246 + should 'define available_locales or use the config available_locales' do
  1247 + environment = Environment.default
  1248 + environment.languages = nil
  1249 + environment.save!
  1250 + assert_equal Noosfero.available_locales, environment.available_locales
  1251 +
  1252 + environment.languages = {'pt' => 'Português', 'en' => 'English'}
  1253 + environment.save!
  1254 + assert_equal ['en', 'pt'], environment.available_locales
  1255 + end
1223 end 1256 end
test/unit/language_helper_test.rb
@@ -23,14 +23,14 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase @@ -23,14 +23,14 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase
23 Noosfero.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once 23 Noosfero.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once
24 24
25 self.expects(:language).returns('pt_BR') 25 self.expects(:language).returns('pt_BR')
26 - result = self.language_chooser 26 + result = self.language_chooser(Environment.default)
27 assert_match /<strong>Português Brasileiro<\/strong>/, result 27 assert_match /<strong>Português Brasileiro<\/strong>/, result
28 assert_no_match /<strong>English<\/strong>/, result 28 assert_no_match /<strong>English<\/strong>/, result
29 assert_no_match /<strong>Français<\/strong>/, result 29 assert_no_match /<strong>Français<\/strong>/, result
30 assert_no_match /<strong>Italiano<\/strong>/, result 30 assert_no_match /<strong>Italiano<\/strong>/, result
31 31
32 self.expects(:language).returns('fr') 32 self.expects(:language).returns('fr')
33 - result = self.language_chooser 33 + result = self.language_chooser(Environment.default)
34 assert_no_match /<strong>Português Brasileiro<\/strong>/, result 34 assert_no_match /<strong>Português Brasileiro<\/strong>/, result
35 assert_no_match /<strong>English<\/strong>/, result 35 assert_no_match /<strong>English<\/strong>/, result
36 assert_match /<strong>Français<\/strong>/, result 36 assert_match /<strong>Français<\/strong>/, result
@@ -42,7 +42,7 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase @@ -42,7 +42,7 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase
42 Noosfero.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once 42 Noosfero.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once
43 43
44 self.expects(:language).returns('en') 44 self.expects(:language).returns('en')
45 - result = self.language_chooser(:element => 'dropdown') 45 + result = self.language_chooser(Environment.default, :element => 'dropdown')
46 assert_match /<option value="en" selected="selected">English<\/option>/, result 46 assert_match /<option value="en" selected="selected">English<\/option>/, result
47 assert_match /<option value="pt_BR">Português Brasileiro<\/option>/, result 47 assert_match /<option value="pt_BR">Português Brasileiro<\/option>/, result
48 assert_match /<option value="fr">Français<\/option>/, result 48 assert_match /<option value="fr">Français<\/option>/, result