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 14 alias :calendar_date_select_language :tinymce_language
15 15  
16 16 def language_chooser(environment, options = {})
  17 + return if environment.locales.size < 2
17 18 current = language
18 19 separator = options[:separator] || ' &mdash; '
19 20  
... ...
test/unit/language_helper_test.rb
... ... @@ -20,29 +20,30 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase
20 20 end
21 21  
22 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 26 self.expects(:language).returns('pt_BR')
26   - result = self.language_chooser(Environment.default)
  27 + result = self.language_chooser(environment)
27 28 assert_match /<strong>Português Brasileiro<\/strong>/, result
28 29 assert_no_match /<strong>English<\/strong>/, result
29 30 assert_no_match /<strong>Français<\/strong>/, result
30 31 assert_no_match /<strong>Italiano<\/strong>/, result
31 32  
32 33 self.expects(:language).returns('fr')
33   - result = self.language_chooser(Environment.default)
  34 + result = self.language_chooser(environment)
34 35 assert_no_match /<strong>Português Brasileiro<\/strong>/, result
35 36 assert_no_match /<strong>English<\/strong>/, result
36 37 assert_match /<strong>Français<\/strong>/, result
37 38 assert_no_match /<strong>Italiano<\/strong>/, result
38   -
39 39 end
40 40  
41 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 45 self.expects(:language).returns('en')
45   - result = self.language_chooser(Environment.default, :element => 'dropdown')
  46 + result = self.language_chooser(environment, :element => 'dropdown')
46 47 assert_match /<option value="en" selected="selected">English<\/option>/, result
47 48 assert_match /<option value="pt_BR">Português Brasileiro<\/option>/, result
48 49 assert_match /<option value="fr">Français<\/option>/, result
... ... @@ -52,6 +53,18 @@ class LanguageHelperTest &lt; ActiveSupport::TestCase
52 53 assert_no_match /<option value="it" selected="selected">Italiano<\/option>/, result
53 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 68 protected
56 69 include NoosferoTestHelper
57 70 include ActionView::Helpers::FormOptionsHelper
... ...