This spec was failing due to using :es as the default_locale in application.rb[1], but using :en as the default_locale in the test environment[2] The fallback rules where getting a little confused and not including the default locale, for the test environment, in the fallback rules With this commit we are making sure that rule is created, as it would in a production environment that uses the default_locale in application.rb [1] https://github.com/AyuntamientoMadrid/consul/blob/master/config/application.rb#L22 [2] https://github.com/AyuntamientoMadrid/consul/blob/master/spec/rails_helper.rb#L15
65 lines
2.0 KiB
Ruby
65 lines
2.0 KiB
Ruby
require 'rails_helper'
|
|
require 'i18n/tasks'
|
|
|
|
describe 'I18n' do
|
|
let(:i18n) { I18n::Tasks::BaseTask.new }
|
|
let(:missing_keys) { i18n.missing_keys }
|
|
let(:unused_keys) { i18n.unused_keys }
|
|
|
|
it 'does not have missing keys' do
|
|
expect(missing_keys).to be_empty,
|
|
"Missing #{missing_keys.leaves.count} i18n keys, run `i18n-tasks missing' to show them"
|
|
end
|
|
|
|
it 'does not have unused keys' do
|
|
expect(unused_keys).to be_empty,
|
|
"#{unused_keys.leaves.count} unused i18n keys, run `i18n-tasks unused' to show them"
|
|
end
|
|
|
|
context "Plurals" do
|
|
|
|
after do
|
|
I18n.backend.reload!
|
|
end
|
|
|
|
it "returns plural rule if translation present" do
|
|
keys = { zero: "No comments",
|
|
one: "1 comment",
|
|
other: "%{count} comments" }
|
|
|
|
I18n.backend.store_translations(:en, { test_plural: keys })
|
|
|
|
expect(I18n.t("test_plural", count: 0)).to eq("No comments")
|
|
expect(I18n.t("test_plural", count: 1)).to eq("1 comment")
|
|
expect(I18n.t("test_plural", count: 2)).to eq("2 comments")
|
|
end
|
|
|
|
it "returns default locale's plural rule if whole translation not present" do
|
|
keys = { zero: "No comments",
|
|
one: "1 comment",
|
|
other: "%{count} comments" }
|
|
|
|
I18n.backend.store_translations(I18n.default_locale, { test_plural: keys })
|
|
I18n.backend.store_translations(:zz, {} )
|
|
|
|
I18n.enforce_available_locales = false
|
|
I18n.locale = :zz
|
|
I18n.fallbacks[:zz] << I18n.default_locale
|
|
|
|
expect(I18n.t("test_plural", count: 0)).to eq("No comments")
|
|
expect(I18n.t("test_plural", count: 1)).to eq("1 comment")
|
|
expect(I18n.t("test_plural", count: 2)).to eq("2 comments")
|
|
end
|
|
|
|
it "returns count if specific plural rule not present" do
|
|
keys = { zero: "No comments" }
|
|
I18n.backend.store_translations(:en, { test_plural: keys })
|
|
|
|
expect(I18n.t("test_plural", count: 0)).to eq("No comments")
|
|
expect(I18n.t("test_plural", count: 1)).to eq(1)
|
|
expect(I18n.t("test_plural", count: 2)).to eq(2)
|
|
end
|
|
|
|
end
|
|
end
|