Setup & test zh-tw locale fix for 2.5.0 release
This commit is contained in:
parent
8f07ac70f4
commit
1c386bc0b1
5 changed files with 115 additions and 13 deletions
38
db/migrate/20180502015927_issue_1219_zhtw_locale_typo.rb
Normal file
38
db/migrate/20180502015927_issue_1219_zhtw_locale_typo.rb
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
class Issue1219ZhtwLocaleTypo < ActiveRecord::Migration[5.1]
|
||||||
|
CURRENT_VERSION = Gem::Version.new(Version.get)
|
||||||
|
APPLICABLE_VERSION = Gem::Version.new('2.5.0')
|
||||||
|
|
||||||
|
def up
|
||||||
|
return unless Setting.find_by(name: 'system_init_done')
|
||||||
|
return unless CURRENT_VERSION >= APPLICABLE_VERSION
|
||||||
|
|
||||||
|
if Locale.exists?(locale: 'zh-tw')
|
||||||
|
Locale.find_by(locale: 'zj-tw')&.destroy
|
||||||
|
else
|
||||||
|
Locale.find_by(locale: 'zj-tw')&.update(locale: 'zh-tw')
|
||||||
|
end
|
||||||
|
|
||||||
|
Translation.where(locale: 'zj-tw')&.update_all(locale: 'zh-tw')
|
||||||
|
User.where('preferences LIKE ?', "%\nlocale: zj-tw\n%").each do |u|
|
||||||
|
u.preferences[:locale] = 'zh-tw'
|
||||||
|
u.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
return unless Setting.find_by(name: 'system_init_done')
|
||||||
|
return unless CURRENT_VERSION < APPLICABLE_VERSION
|
||||||
|
|
||||||
|
if Locale.exists?(locale: 'zj-tw')
|
||||||
|
Locale.find_by(locale: 'zh-tw')&.destroy
|
||||||
|
else
|
||||||
|
Locale.find_by(locale: 'zh-tw')&.update(locale: 'zj-tw')
|
||||||
|
end
|
||||||
|
|
||||||
|
Translation.where(locale: 'zh-tw')&.update_all(locale: 'zj-tw')
|
||||||
|
User.where('preferences LIKE ?', "%\nlocale: zh-tw\n%").each do |u|
|
||||||
|
u.preferences[:locale] = 'zj-tw'
|
||||||
|
u.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -15,18 +15,9 @@ returns
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def self.get
|
def self.get
|
||||||
|
File.read(Rails.root.join('VERSION')).strip
|
||||||
begin
|
|
||||||
version = File.read(Rails.root.join('VERSION'))
|
|
||||||
version.strip!
|
|
||||||
rescue => e
|
rescue => e
|
||||||
message = e.to_s
|
Rails.logger.error "VERSION file could not be read: #{e}"
|
||||||
Rails.logger.error "VERSION file could not be read: #{message}"
|
return ''
|
||||||
|
|
||||||
version = ''
|
|
||||||
end
|
end
|
||||||
|
|
||||||
version
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
58
spec/db/migrate/issue_1219_zhtw_locale_typo_spec.rb
Normal file
58
spec/db/migrate/issue_1219_zhtw_locale_typo_spec.rb
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Issue1219ZhtwLocaleTypo, type: :db_migration do
|
||||||
|
let(:locale) { create(:locale, locale: premigrate_locale, name: 'Chinese (Tradi.) (正體中文)') }
|
||||||
|
let(:translation) { create(:translation, locale: premigrate_locale) }
|
||||||
|
let(:user) { create(:user, preferences: { locale: premigrate_locale }) }
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
Locale.find_by(name: 'Chinese (Tradi.) (正體中文)')&.destroy
|
||||||
|
stub_const("#{described_class}::CURRENT_VERSION", version)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'upgrading to version 2.5.0+' do
|
||||||
|
let(:premigrate_locale) { 'zj-tw' }
|
||||||
|
let(:version) { Gem::Version.new('2.5.0') }
|
||||||
|
|
||||||
|
it 'corrects the zh-tw locale code' do
|
||||||
|
expect { migrate }
|
||||||
|
.to change { locale.reload.locale }
|
||||||
|
.from('zj-tw').to('zh-tw')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'updates translation records' do
|
||||||
|
expect { migrate }
|
||||||
|
.to change { translation.reload.locale }
|
||||||
|
.from('zj-tw').to('zh-tw')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'updates user records (preferences[:locale])' do
|
||||||
|
expect { migrate }
|
||||||
|
.to change { user.reload.preferences[:locale] }
|
||||||
|
.from('zj-tw').to('zh-tw')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'downgrading to version <2.5.0' do
|
||||||
|
let(:premigrate_locale) { 'zh-tw' }
|
||||||
|
let(:version) { Gem::Version.new('2.4.99') }
|
||||||
|
|
||||||
|
it 'reverts the zh-tw locale code back to zj-tw' do
|
||||||
|
expect { migrate(:down) }
|
||||||
|
.to change { locale.reload.locale }
|
||||||
|
.from('zh-tw').to('zj-tw')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'reverts translation records' do
|
||||||
|
expect { migrate(:down) }
|
||||||
|
.to change { translation.reload.locale }
|
||||||
|
.from('zh-tw').to('zj-tw')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'reverts user records (preferences[:locale])' do
|
||||||
|
expect { migrate(:down) }
|
||||||
|
.to change { user.reload.preferences[:locale] }
|
||||||
|
.from('zh-tw').to('zj-tw')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
6
spec/factories/locale.rb
Normal file
6
spec/factories/locale.rb
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
FactoryBot.define do
|
||||||
|
factory :locale do
|
||||||
|
locale 'de-de'
|
||||||
|
name 'Deutsch'
|
||||||
|
end
|
||||||
|
end
|
9
spec/factories/translation.rb
Normal file
9
spec/factories/translation.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
FactoryBot.define do
|
||||||
|
factory :translation do
|
||||||
|
locale 'de-de'
|
||||||
|
source 'date'
|
||||||
|
target 'dd/mm/yyyy'
|
||||||
|
created_by_id 1
|
||||||
|
updated_by_id 1
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue