* report key and path for missing keys * move iteration out of the string into the method * make the details common to the missing and unused lists
40 lines
1.5 KiB
Ruby
40 lines
1.5 KiB
Ruby
require "i18n/tasks"
|
|
|
|
RSpec.describe I18n do
|
|
let(:i18n) { I18n::Tasks::BaseTask.new }
|
|
let(:missing_keys) { i18n.missing_keys }
|
|
let(:unused_keys) { i18n.unused_keys }
|
|
let(:inconsistent_interpolations) { i18n.inconsistent_interpolations }
|
|
|
|
def details(keys)
|
|
keys.leaves.map do |node|
|
|
{ key: node.full_key, file: node.data[:path] }
|
|
end
|
|
end
|
|
|
|
it "does not have missing keys" do
|
|
expect(missing_keys).to be_empty,
|
|
"Missing #{missing_keys.leaves.count} i18n keys\n #{details(missing_keys)}"
|
|
end
|
|
|
|
xit "does not have unused keys" do
|
|
expect(unused_keys).to be_empty,
|
|
"#{unused_keys.leaves.count} unused i18n keys\n #{details(unused_keys)}"
|
|
end
|
|
|
|
# NOTE: [@rhymes] disabling normalization check for now as it fails on CI but
|
|
# not locally, needs investigation
|
|
xit "files are normalized" do
|
|
non_normalized = i18n.non_normalized_paths
|
|
error_message = "The following files need to be normalized:\n" \
|
|
"#{non_normalized.map { |path| " #{path}" }.join("\n")}\n" \
|
|
"Please run `i18n-tasks normalize' to fix"
|
|
expect(non_normalized).to be_empty, error_message
|
|
end
|
|
|
|
it "does not have inconsistent interpolations" do
|
|
error_message = "#{inconsistent_interpolations.leaves.count} i18n keys have inconsistent interpolations.\n" \
|
|
"Run `i18n-tasks check-consistent-interpolations' to show them"
|
|
expect(inconsistent_interpolations).to be_empty, error_message
|
|
end
|
|
end
|