5 puts "==> The test/spec library (gem) is required to run the Gibberish tests."
9 $:.unshift File.dirname(__FILE__) + '/../lib'
10 require 'active_support'
14 Gibberish.load_languages!
16 context "After loading languages, Gibberish" do
18 Gibberish.current_language = nil
21 specify "should know what languages it has translations for" do
22 Gibberish.languages.should.include :es
25 specify "should know if it is using the default language" do
26 Gibberish.should.be.default_language
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
41 specify "should be able to switch languages using strings" do
42 Gibberish.current_language = 'es'
43 Gibberish.current_language.should.equal :es
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
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
65 Gibberish.should.be.default_language
66 string[:welcome_friend].should.equal string
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
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
83 specify "should be able to accept new, unique reserved keys" do
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
94 context "When no language is set" do
96 Gibberish.current_language = nil
99 specify "the default language should be used" do
100 Gibberish.current_language.should.equal Gibberish.default_language
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
111 context "When a non-existent language is set" do
113 Gibberish.current_language = :klingon
116 specify "the default language should be used" do
117 Gibberish.current_language.should.equal Gibberish.default_language
120 specify "gibberish strings should return themselves" do
121 string = "something gibberishy"
122 string[:welcome_friend].should.equal string
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
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?"
137 specify "should not affect existing string methods" do
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
149 specify "should return nil if a reserved key is used" do
150 "string"[:limit].should.be.nil
153 specify "should set default key to underscored string" do
154 Gibberish.current_language = :es
155 'welcome friend'[].should == '¡Recepción, amigo!'
159 context "When a non-default language is set" do
161 Gibberish.current_language = :es
164 specify "that language should be used" do
165 Gibberish.current_language.should.equal :es
168 specify "the default language should not be used" do
169 Gibberish.should.not.be.default_language
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
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!"