issue_1219_zhtw_locale_typo_spec.rb 2.0 KB

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