Commit 9ef330cfb6adf27b4818d07f6f868a514c9725a8

Authored by Rodrigo Souto
1 parent 852b2fe7

[language-selection] Hiding language chooser if there is less than 2 languages available

app/helpers/language_helper.rb
@@ -14,6 +14,7 @@ module LanguageHelper @@ -14,6 +14,7 @@ module LanguageHelper
14 alias :calendar_date_select_language :tinymce_language 14 alias :calendar_date_select_language :tinymce_language
15 15
16 def language_chooser(environment, options = {}) 16 def language_chooser(environment, options = {})
  17 + return if environment.locales.size < 2
17 current = language 18 current = language
18 separator = options[:separator] || ' &mdash; ' 19 separator = options[:separator] || ' &mdash; '
19 20
test/unit/language_helper_test.rb
@@ -20,29 +20,30 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase @@ -20,29 +20,30 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase
20 end 20 end
21 21
22 should 'generate language chooser correcly' do 22 should 'generate language chooser correcly' do
23 - Noosfero.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once 23 + environment = Environment.default
  24 + environment.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once
24 25
25 self.expects(:language).returns('pt_BR') 26 self.expects(:language).returns('pt_BR')
26 - result = self.language_chooser(Environment.default) 27 + result = self.language_chooser(environment)
27 assert_match /<strong>Português Brasileiro<\/strong>/, result 28 assert_match /<strong>Português Brasileiro<\/strong>/, result
28 assert_no_match /<strong>English<\/strong>/, result 29 assert_no_match /<strong>English<\/strong>/, result
29 assert_no_match /<strong>Français<\/strong>/, result 30 assert_no_match /<strong>Français<\/strong>/, result
30 assert_no_match /<strong>Italiano<\/strong>/, result 31 assert_no_match /<strong>Italiano<\/strong>/, result
31 32
32 self.expects(:language).returns('fr') 33 self.expects(:language).returns('fr')
33 - result = self.language_chooser(Environment.default) 34 + result = self.language_chooser(environment)
34 assert_no_match /<strong>Português Brasileiro<\/strong>/, result 35 assert_no_match /<strong>Português Brasileiro<\/strong>/, result
35 assert_no_match /<strong>English<\/strong>/, result 36 assert_no_match /<strong>English<\/strong>/, result
36 assert_match /<strong>Français<\/strong>/, result 37 assert_match /<strong>Français<\/strong>/, result
37 assert_no_match /<strong>Italiano<\/strong>/, result 38 assert_no_match /<strong>Italiano<\/strong>/, result
38 -  
39 end 39 end
40 40
41 should 'generate drodown language chooser correcly' do 41 should 'generate drodown language chooser correcly' do
42 - Noosfero.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once 42 + environment = Environment.default
  43 + environment.expects(:locales).returns({ 'en' => 'English', 'pt_BR' => 'Português Brasileiro', 'fr' => 'Français', 'it' => 'Italiano' }).at_least_once
43 44
44 self.expects(:language).returns('en') 45 self.expects(:language).returns('en')
45 - result = self.language_chooser(Environment.default, :element => 'dropdown') 46 + result = self.language_chooser(environment, :element => 'dropdown')
46 assert_match /<option value="en" selected="selected">English<\/option>/, result 47 assert_match /<option value="en" selected="selected">English<\/option>/, result
47 assert_match /<option value="pt_BR">Português Brasileiro<\/option>/, result 48 assert_match /<option value="pt_BR">Português Brasileiro<\/option>/, result
48 assert_match /<option value="fr">Français<\/option>/, result 49 assert_match /<option value="fr">Français<\/option>/, result
@@ -52,6 +53,18 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase @@ -52,6 +53,18 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase
52 assert_no_match /<option value="it" selected="selected">Italiano<\/option>/, result 53 assert_no_match /<option value="it" selected="selected">Italiano<\/option>/, result
53 end 54 end
54 55
  56 + should 'not list languages if there is less than 2 languages available' do
  57 + environment = Environment.default
  58 +
  59 + environment.expects(:locales).returns({ 'en' => 'English'}).at_least_once
  60 + result = self.language_chooser(environment)
  61 + assert result.blank?
  62 +
  63 + environment.expects(:locales).returns({}).at_least_once
  64 + result = self.language_chooser(environment)
  65 + assert result.blank?
  66 + end
  67 +
55 protected 68 protected
56 include NoosferoTestHelper 69 include NoosferoTestHelper
57 include ActionView::Helpers::FormOptionsHelper 70 include ActionView::Helpers::FormOptionsHelper