localization_spec.rb 3.8 KB

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