beast rev 2066
[beast-modified.git] / vendor / plugins / gibberish / test / gibberish_test.rb
blob17bd14f9da246f111b51406ec664b23cae12bdce
1 begin
2   require 'rubygems'
3   require 'test/spec'
4 rescue LoadError
5   puts "==> The test/spec library (gem) is required to run the Gibberish tests."
6   exit
7 end
9 $:.unshift File.dirname(__FILE__) + '/../lib'
10 require 'active_support'
11 require 'gibberish'
13 RAILS_ROOT = '.'
14 Gibberish.load_languages!
16 context "After loading languages, Gibberish" do
17   teardown do
18     Gibberish.current_language = nil
19   end
21   specify "should know what languages it has translations for" do
22     Gibberish.languages.should.include :es
23   end
25   specify "should know if it is using the default language" do
26     Gibberish.should.be.default_language
27   end
29   specify "should be able to switch between existing languages" do
30     Gibberish.current_language = :es
31     string = "Welcome, friend!"
32     string[:welcome_friend].should.not.equal string
34     Gibberish.current_language = :fr
35     string[:welcome_friend].should.not.equal string
37     Gibberish.current_language = nil
38     string[:welcome_friend].should.equal string
39   end
41   specify "should be able to switch languages using strings" do
42     Gibberish.current_language = 'es'
43     Gibberish.current_language.should.equal :es
44   end
46   specify "should be able to switch to the default language at any time" do
47     Gibberish.current_language = :fr
48     Gibberish.should.not.be.default_language
50     Gibberish.current_language = nil
51     Gibberish.should.be.default_language
52   end
54   specify "should be able to switch to a certain language for the duration of a block" do
55     Gibberish.should.be.default_language
57     string = "Welcome, friend!"
58     string[:welcome_friend].should.equal string
60     Gibberish.use_language :es do
61       string[:welcome_friend].should.not.equal string
62       Gibberish.should.not.be.default_language
63     end
65     Gibberish.should.be.default_language
66     string[:welcome_friend].should.equal string
67   end
69   specify "should return an array of the languages it loaded" do
70     languages = Gibberish.load_languages!
71     languages.should.be.an.instance_of Array
72     languages.should.include :es
73     languages.should.include :fr
74   end
76   specify "should know what languages it has loaded" do
77     languages = Gibberish.languages
78     languages.should.be.an.instance_of Array
79     languages.should.include :es
80     languages.should.include :fr
81   end
83   specify "should be able to accept new, unique reserved keys" do
84     key = :something_evil
85     Gibberish.add_reserved_key key
86     Gibberish.reserved_keys.should.include key
87     Gibberish.reserved_keys.size.should.equal 2
88     Gibberish.add_reserved_key key
89     Gibberish.add_reserved_key key
90     Gibberish.reserved_keys.size.should.equal 2
91   end
92 end
94 context "When no language is set" do
95   setup do
96     Gibberish.current_language = nil
97   end
99   specify "the default language should be used" do
100     Gibberish.current_language.should.equal Gibberish.default_language
101   end
103   specify "a gibberish string should return itself" do
104     string = "Welcome, friend!"
105     Gibberish.translate(string, :welcome_friend).should.equal string
107     string[:welcome_friend].should.equal string
108   end
111 context "When a non-existent language is set" do
112   setup do
113     Gibberish.current_language = :klingon
114   end
116   specify "the default language should be used" do
117     Gibberish.current_language.should.equal Gibberish.default_language
118   end
120   specify "gibberish strings should return themselves" do
121     string = "something gibberishy"
122     string[:welcome_friend].should.equal string
123   end 
126 context "A gibberish string (in general)" do
127   specify "should be a string" do
128     "gibberish"[:just_a_string].should.be.an.instance_of String
129     "non-gibberish".should.be.an.instance_of String
130   end
132   specify "should interpolate if passed arguments and replaces are present" do
133     'Hi, {user} of {place}'[:hi_there, 'chris', 'france'].should.equal "Hi, chris of france"
134     '{computer} omg?'[:puter, 'mac'].should.equal "mac omg?"
135   end
137   specify "should not affect existing string methods" do
138     string = "chris"
139     answer = 'ch'
140     string[0..1].should.equal answer
141     string[0, 2].should.equal answer
142     string[0].should.equal 99
143     string[/ch/].should.equal answer
144     string['ch'].should.equal answer
145     string['bc'].should.be.nil
146     string[/dog/].should.be.nil
147   end
149   specify "should return nil if a reserved key is used" do
150     "string"[:limit].should.be.nil
151   end
152   
153   specify "should set default key to underscored string" do
154     Gibberish.current_language = :es
155     'welcome friend'[].should == '¡Recepción, amigo!'
156   end
159 context "When a non-default language is set" do
160   setup do
161     Gibberish.current_language = :es
162   end
164   specify "that language should be used" do
165     Gibberish.current_language.should.equal :es
166   end
168   specify "the default language should not be used" do
169     Gibberish.should.not.be.default_language
170   end
172   specify "a gibberish string should return itself if a corresponding key is not found" do
173     string = "The internet!"
174     string[:the_internet].should.equal string
175   end
177   specify "a gibberish string should return a translated version of itself if a corresponding key is found" do
178     "Welcome, friend!"[:welcome_friend].should.equal "¡Recepción, amigo!"
179     "I love Rails."[:love_rails].should.equal "Amo los carriles."
180     'Welcome, {user}!'[:welcome_user, 'Marvin'].should.equal "¡Recepción, Marvin!"
181   end