Add some validations for i18n values

These only apply to the en.yml file for now, but can be expanded
in due course.
This commit is contained in:
Andy Allan 2023-03-29 18:50:44 +01:00
parent 83809210ed
commit 387d130e87

View file

@ -55,6 +55,20 @@ class I18nTest < ActiveSupport::TestCase
end end
end end
def test_en_for_raw_html
en = YAML.load_file(Rails.root.join("config/locales/en.yml"))
assert_nothing_raised do
check_values_for_raw_html(en)
end
end
def test_en_for_nil_values
en = YAML.load_file(Rails.root.join("config/locales/en.yml"))
assert_nothing_raised do
check_values_for_nil(en)
end
end
private private
def translation_keys(scope = nil) def translation_keys(scope = nil)
@ -81,4 +95,25 @@ class I18nTest < ActiveSupport::TestCase
rescue I18n::MissingTranslationData rescue I18n::MissingTranslationData
[:zero, :one, :other] [:zero, :one, :other]
end end
def check_values_for_raw_html(hash)
hash.each_pair do |k, v|
if v.is_a? Hash
check_values_for_raw_html(v)
else
next unless k.end_with?("_html")
raise "Avoid using raw html in '#{k}: #{v}'" if v.include? "<"
end
end
end
def check_values_for_nil(hash)
hash.each_pair do |k, v|
if v.is_a? Hash
check_values_for_nil(v)
else
raise "Avoid nil values in '#{k}: nil'" if v.nil?
end
end
end
end end