issue_1219_zhtw_locale_typo_spec.rb 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Issue1219ZhtwLocaleTypo, type: :db_migration do
  4. let(:locale) { create(:locale, locale: premigrate_locale, name: 'Chinese (Trad.) (繁體中文)') }
  5. let(:translation) { create(:translation, locale: premigrate_locale) }
  6. let(:user) { create(:user, preferences: { locale: premigrate_locale }) }
  7. before do
  8. Locale.where(locale: %w[zh-tw zj-tw]).each(&:destroy)
  9. stub_const("#{described_class}::CURRENT_VERSION", version)
  10. end
  11. context 'upgrading to version 2.5.0+' do
  12. let(:premigrate_locale) { 'zj-tw' }
  13. let(:version) { Gem::Version.new('2.5.0') }
  14. it 'corrects the zh-tw locale code' do
  15. expect { migrate }
  16. .to change { locale.reload.locale }
  17. .from('zj-tw').to('zh-tw')
  18. end
  19. it 'updates translation records' do
  20. expect { migrate }
  21. .to change { translation.reload.locale }
  22. .from('zj-tw').to('zh-tw')
  23. end
  24. it 'updates user records (preferences[:locale])' do
  25. expect { migrate }
  26. .to change { user.reload.preferences[:locale] }
  27. .from('zj-tw').to('zh-tw')
  28. end
  29. end
  30. context 'downgrading to version <2.5.0' do
  31. let(:premigrate_locale) { 'zh-tw' }
  32. let(:version) { Gem::Version.new('2.4.99') }
  33. it 'reverts the zh-tw locale code back to zj-tw' do
  34. expect { migrate(:down) }
  35. .to change { locale.reload.locale }
  36. .from('zh-tw').to('zj-tw')
  37. end
  38. it 'reverts translation records' do
  39. expect { migrate(:down) }
  40. .to change { translation.reload.locale }
  41. .from('zh-tw').to('zj-tw')
  42. end
  43. it 'reverts user records (preferences[:locale])' do
  44. expect { migrate(:down) }
  45. .to change { user.reload.preferences[:locale] }
  46. .from('zh-tw').to('zj-tw')
  47. end
  48. end
  49. end