localization_spec.rb 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe 'Job > Localization' do # rubocop:disable RSpec/DescribeClass
  4. let(:job) { create(:job, perform: perform, localization: locale, timezone: time_zone) }
  5. let(:time_zone) { 'Europe/Berlin' }
  6. let(:locale) { 'de-de' }
  7. let(:perform) do
  8. {
  9. 'article.note' => {
  10. 'subject' => 'Test subject note',
  11. 'internal' => 'true',
  12. 'body' => body,
  13. },
  14. }
  15. end
  16. let(:body) do
  17. <<~BODY
  18. Lieber Absender, wir haben Ihre Anfrage erhalten und werden sie so schnell wie möglich bearbeiten.
  19. Daten:
  20. * Status: \#{t(ticket.state.name)}
  21. * Priorität: \#{t(ticket.priority.name)}
  22. * Erstellt am: \#{ticket.created_at}
  23. BODY
  24. end
  25. context 'when locale is set' do
  26. before do
  27. Translation.sync_locale_from_po(locale)
  28. Setting.set('locale_default', 'el')
  29. Setting.set('timezone_default', 'Africa/Abidjan')
  30. job
  31. end
  32. it 'creates a note with translated content' do
  33. ticket = create(:ticket, state_id: Ticket::State.find_by(name: 'open').id, priority_id: Ticket::Priority.lookup(name: '3 high').id)
  34. job.run(true)
  35. expect(Ticket::Article.last.body).to eq(<<~BODY)
  36. Lieber Absender, wir haben Ihre Anfrage erhalten und werden sie so schnell wie möglich bearbeiten.
  37. Daten:
  38. * Status: offen
  39. * Priorität: 3 hoch
  40. * Erstellt am: #{ticket.created_at.in_time_zone(time_zone).strftime('%d.%m.%Y %H:%M (Europe/Berlin)')}
  41. BODY
  42. end
  43. context 'when timezone is set' do
  44. let(:time_zone) { 'Europe/London' }
  45. it 'creates a note with translated content' do
  46. ticket = create(:ticket, state_id: Ticket::State.find_by(name: 'open').id, priority_id: Ticket::Priority.lookup(name: '3 high').id)
  47. job.run(true)
  48. expect(Ticket::Article.last.body).to eq(<<~BODY)
  49. Lieber Absender, wir haben Ihre Anfrage erhalten und werden sie so schnell wie möglich bearbeiten.
  50. Daten:
  51. * Status: offen
  52. * Priorität: 3 hoch
  53. * Erstellt am: #{ticket.created_at.in_time_zone(time_zone).strftime('%d.%m.%Y %H:%M (Europe/London)')}
  54. BODY
  55. end
  56. end
  57. context 'when locale and timezone are not set' do
  58. let(:time_zone) { nil }
  59. let(:locale) { nil }
  60. it 'creates a note with untranslated content' do
  61. ticket = create(:ticket, state_name: 'open', priority_name: '3 high')
  62. job.run(true)
  63. expect(Ticket::Article.last.body).to eq(<<~BODY)
  64. Lieber Absender, wir haben Ihre Anfrage erhalten und werden sie so schnell wie möglich bearbeiten.
  65. Daten:
  66. * Status: open
  67. * Priorität: 3 high
  68. * Erstellt am: #{ticket.created_at.in_time_zone(time_zone).strftime('%Y-%m-%d %H:%M:%S %z')}
  69. BODY
  70. end
  71. end
  72. context "when locale and timezone are set to system's default" do
  73. let(:time_zone) { 'system' }
  74. let(:locale) { 'system' }
  75. it 'creates a note with untranslated content' do
  76. ticket = create(:ticket, state_name: 'open', priority_name: '3 high')
  77. job.run(true)
  78. expect(Ticket::Article.last.body).to eq(<<~BODY)
  79. Lieber Absender, wir haben Ihre Anfrage erhalten und werden sie so schnell wie möglich bearbeiten.
  80. Daten:
  81. * Status: open
  82. * Priorität: 3 high
  83. * Erstellt am: #{ticket.created_at.in_time_zone(Setting.get('timezone_default')).strftime('%Y-%m-%d %H:%M:%S %z')}
  84. BODY
  85. end
  86. end
  87. end
  88. end