trabajo-afectivo/spec/models/translation_spec.rb

124 lines
3.8 KiB
Ruby
Raw Normal View History

2016-12-06 10:46:26 +00:00
require 'rails_helper'
RSpec.describe Translation do
context 'default translations' do
Translation.reset('de-de')
Translation.sync('de-de')
it 'en with existing word' do
expect(Translation.translate('en', 'New')).to eq('New')
end
it 'en-us with existing word' do
expect(Translation.translate('en-us', 'New')).to eq('New')
end
it 'en with not existing word' do
expect(Translation.translate('en', 'Some Not Existing Word')).to eq('Some Not Existing Word')
end
it 'de-de with existing word' do
expect(Translation.translate('de-de', 'New')).to eq('Neu')
end
it 'de-de with existing word' do
expect(Translation.translate('de-de', 'Some Not Existing Word')).to eq('Some Not Existing Word')
end
end
context 'custom translation tests' do
Translation.where(locale: 'de-de').destroy_all
Translation.sync('de-de')
locale = 'de-de'
it 'cycle of change and reload translation' do
# check for non existing custom changes
list = Translation.lang(locale)
list['list'].each { |item|
translation = Translation.find_by(source: item[1], locale: locale)
expect(translation.class).to be(Translation)
expect(locale).to eq(translation.locale)
expect(translation.target).to eq(translation.target_initial)
}
# add custom changes
translation = Translation.find_by(locale: locale, source: 'open')
expect(translation.target).to eq('offen')
expect(translation.target_initial).to eq('offen')
translation.target = 'offen2'
translation.save!
list = Translation.lang(locale)
list['list'].each { |item|
translation = Translation.find_by(source: item[1], locale: locale)
expect(translation.class).to be(Translation)
expect(locale).to eq(translation.locale)
if translation.source == 'open'
expect(translation.target).to eq('offen2')
expect(translation.target_initial).to eq('offen')
else
expect(translation.target).to eq(translation.target_initial)
end
}
# check for existing custom changes after new translations are loaded
Translation.load(locale)
list = Translation.lang(locale)
list['list'].each { |item|
translation = Translation.find_by(source: item[1], locale: locale)
expect(translation.class).to be(Translation)
expect(locale).to eq(translation.locale)
if translation.source == 'open'
expect(translation.target).to eq('offen2')
expect(translation.target_initial).to eq('offen')
else
expect(translation.target).to eq(translation.target_initial)
end
}
# reset custom translations and check for non existing custom changes
Translation.reset(locale)
list = Translation.lang(locale)
list['list'].each { |item|
translation = Translation.find_by(source: item[1], locale: locale)
expect(translation.class).to be(Translation)
expect(locale).to eq(translation.locale)
expect(translation.target).to eq(translation.target_initial)
}
end
end
context 'file based import' do
it 'check download of locales' do
directory = Rails.root.join('config')
file = Rails.root.join("#{directory}/locales.yml")
if File.exist?(file)
File.delete(file)
end
expect(File.exist?(file)).to be false
Locale.fetch
expect(File.exist?(file)).to be true
end
it 'check download of translations' do
locale = 'de-de'
directory = Rails.root.join('config/translations')
if File.directory?(directory)
FileUtils.rm_rf(directory)
end
file = Rails.root.join("#{directory}/#{locale}.yml")
expect(File.exist?(file)).to be false
Translation.fetch(locale)
expect(File.exist?(file)).to be true
end
end
end