|
@@ -0,0 +1,123 @@
|
|
|
+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
|