spec/skala/i18n_spec.rb in skala-0.2.0 vs spec/skala/i18n_spec.rb in skala-0.3.0
- old
+ new
@@ -4,89 +4,92 @@
_klass.send(:include, described_class)
end
end
context "when included into a class" do
- context "when the including class has a class variable named @@locales" do
- let(:value_of_locales) do
- { foo: "bar" }
- end
-
- let(:klass) do
- Class.new.tap do |_klass|
- _klass.class_variable_set(:@@locales, value_of_locales)
- _klass.send(:include, described_class)
- end
- end
-
- it "does not alter the existing class variable" do
- expect(klass.class_variable_get(:@@locales)).to eq(value_of_locales)
- end
+ it "defines a class method #load_locales_from_directory" do
+ expect(class_with_i18n_included).to respond_to(:load_locales_from_directory)
end
- context "when the including class has no class variable named @@locales" do
- let(:klass) do
- Class.new.tap do |_klass|
- _klass.send(:include, described_class)
- end
- end
-
- it "defines a class variable named @@locales as an empty hash" do
- expect(klass.class_variable_get(:@@locales)).to eq({})
- end
+ it "defines a class method #locales" do
+ expect(class_with_i18n_included).to respond_to(:locales)
end
- it "defines a class method #load_locales_from_directory" do
- expect(class_with_i18n_included).to respond_to(:load_locales_from_directory)
+ it "defines a class method #translate" do
+ expect(class_with_i18n_included).to respond_to(:translate)
end
-
+
it "defines an instance method .translate" do
expect(class_with_i18n_included.new).to respond_to(:translate)
end
end
describe "#load_locales_from_directory" do
- it "loads all yaml encoded locales from a directory and adds them to @@locales" do
- class_with_i18n_included.load_locales_from_directory(File.expand_path("#{File.dirname(__FILE__)}/../assets/locales"))
- expect(class_with_i18n_included.class_variable_get(:@@locales)).not_to be_empty
+ it "loads all yaml encoded locales from a directory" do
+ loaded_locales =
+ class_with_i18n_included.load_locales_from_directory(
+ File.expand_path("#{File.dirname(__FILE__)}/../assets/locales")
+ )
+
+ expect(loaded_locales).not_to be_empty
end
end
-
+
describe "#translate" do
- let(:object) do
- class_with_i18n_included.new.tap do |_object|
- _object.class.load_locales_from_directory(File.expand_path("#{File.dirname(__FILE__)}/../assets/locales"))
+ context "if the class defines .locales" do
+ let(:class_with_i18n_included_and_locales) do
+ Class.new(class_with_i18n_included).tap do |_klass|
+ def _klass.locales
+ load_locales_from_directory(
+ File.expand_path("#{File.dirname(__FILE__)}/../assets/locales")
+ )
+ end
+ end
end
- end
- it "translates the given key into the language specified by the locale option" do
- translated_key_de = object.translate("field_names.creator", locale: :de)
- translated_key_en = object.translate("field_names.creator", locale: :en)
-
- expected_translation_de = object.class.class_variable_get(:@@locales)["de"]["field_names"]["creator"]
- expected_translation_en = object.class.class_variable_get(:@@locales)["en"]["field_names"]["creator"]
+ let(:object) do
+ class_with_i18n_included_and_locales.new
+ end
- expect(translated_key_de).to eq(expected_translation_de)
- expect(translated_key_en).to eq(expected_translation_en)
- end
+ it "translates the given key into the language specified by the locale option" do
+ translated_key_de = object.translate("field_names.creator", locale: :de)
+ translated_key_en = object.translate("field_names.creator", locale: :en)
+
+ expected_translation_de = object.class.locales["de"]["field_names"]["creator"]
+ expected_translation_en = object.class.locales["en"]["field_names"]["creator"]
- it "supports rails style interpolation" do
- expected_date = "1. Januar 2015"
- translated_key = object.translate("records.items.loan_status.expected", locale: :de, expected_date: expected_date)
- expected_translation = object.class.class_variable_get(:@@locales)["de"]["records"]["items"]["loan_status"]["expected"].gsub("%{expected_date}", expected_date)
+ expect(translated_key_de).to eq(expected_translation_de)
+ expect(translated_key_en).to eq(expected_translation_en)
+ end
+
+ it "supports rails style interpolation" do
+ expected_date = "1. Januar 2015"
+ translated_key = object.translate("records.items.loan_status.expected", locale: :de, expected_date: expected_date)
+ expected_translation = object.class.locales["de"]["records"]["items"]["loan_status"]["expected"].gsub("%{expected_date}", expected_date)
- expect(translated_key).to eq(expected_translation)
- end
+ expect(translated_key).to eq(expected_translation)
+ end
+
+ context "when there is no translation" do
+ it "returns the last key path" do
+ expect(object.translate("foo.bar.muff", locale: :en)).to eq("muff")
+ end
+ end
- context "when there is no translation" do
- it "returns to last key path" do
- expect(object.translate("foo.bar.muff", locale: :en)).to eq("muff")
+ context "when no locale option is given" do
+ it "raises an exception" do
+ expect { object.translate("field_names.creator") }.to raise_error
+ end
end
end
- context "when no locale option is given" do
- it "raises an exception" do
- expect { object.translate("field_names.creator") }.to raise_error
+ context "if the class does not define .locales" do
+ let(:object) do
+ class_with_i18n_included.new
+ end
+
+ it "returns the last key path" do
+ expect(object.translate("foo.bar.muff", locale: :en)).to eq("muff")
end
end
end
end