mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 00:37:06 +08:00
f529cb1674
* Our codebase currently supports custom interpolations keys that are not present in the original translation. The proper fix should be to make `TranslateOverride` aware of such keys.
42 lines
1.2 KiB
Ruby
42 lines
1.2 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe TranslationOverride do
|
|
context 'validations' do
|
|
describe '#value' do
|
|
before do
|
|
I18n.backend.store_translations(:en, some_key: '%{first} %{second}')
|
|
end
|
|
|
|
describe 'when interpolation keys are missing' do
|
|
it 'should not be valid' do
|
|
translation_override = TranslationOverride.upsert!(
|
|
I18n.locale, 'some_key', '%{first}'
|
|
)
|
|
|
|
expect(translation_override.errors.full_messages).to include(I18n.t(
|
|
'activerecord.errors.models.translation_overrides.attributes.value.missing_interpolation_keys',
|
|
keys: 'second'
|
|
))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
it "upserts values" do
|
|
TranslationOverride.upsert!('en', 'some.key', 'some value')
|
|
|
|
ovr = TranslationOverride.where(locale: 'en', translation_key: 'some.key').first
|
|
expect(ovr).to be_present
|
|
expect(ovr.value).to eq('some value')
|
|
end
|
|
|
|
it "stores js for a message format key" do
|
|
TranslationOverride.upsert!('en', 'some.key_MF', '{NUM_RESULTS, plural, one {1 result} other {many} }')
|
|
|
|
ovr = TranslationOverride.where(locale: 'en', translation_key: 'some.key_MF').first
|
|
expect(ovr).to be_present
|
|
expect(ovr.compiled_js).to match(/function/)
|
|
end
|
|
|
|
end
|