follow_up_merged_spec.rb 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Channel::Filter::FollowUpMerged, type: :channel_filter do
  4. context 'merged' do
  5. it 'handles ticket merged to one ticket' do
  6. ticket1 = create(:ticket)
  7. ticket2 = create(:ticket)
  8. ticket1.merge_to(ticket_id: ticket2.id, user_id: 1)
  9. mail = {
  10. 'x-zammad-ticket-id': ticket1.id
  11. }
  12. filter(mail)
  13. expect(mail[:'x-zammad-ticket-id']).to eq(ticket2.id)
  14. end
  15. it 'handles first merged chain' do
  16. ticket1 = create(:ticket)
  17. ticket2 = create(:ticket)
  18. ticket3 = create(:ticket)
  19. ticket1.merge_to(ticket_id: ticket2.id, user_id: 1)
  20. ticket2.merge_to(ticket_id: ticket3.id, user_id: 1)
  21. mail = {
  22. 'x-zammad-ticket-id': ticket1.id
  23. }
  24. filter(mail)
  25. expect(mail[:'x-zammad-ticket-id']).to eq(ticket3.id)
  26. end
  27. it 'handles ticket in merged ticket chain' do
  28. ticket1 = create(:ticket)
  29. ticket2 = create(:ticket)
  30. ticket3 = create(:ticket)
  31. ticket4 = create(:ticket)
  32. ticket1.merge_to(ticket_id: ticket2.id, user_id: 1)
  33. ticket2.merge_to(ticket_id: ticket3.id, user_id: 1)
  34. ticket3.merge_to(ticket_id: ticket4.id, user_id: 1)
  35. mail = {
  36. 'x-zammad-ticket-id': ticket2.id
  37. }
  38. filter(mail)
  39. expect(mail[:'x-zammad-ticket-id']).to eq(ticket4.id)
  40. end
  41. end
  42. context 'ignored mails' do
  43. it 'ignores new tickets' do
  44. mail = {}
  45. expect do
  46. filter(mail)
  47. end.to not_change {
  48. mail
  49. }
  50. end
  51. it 'ignores unmerged tickets' do
  52. ticket = create(:ticket)
  53. mail = {
  54. 'x-zammad-ticket-id': ticket.id
  55. }
  56. expect do
  57. filter(mail)
  58. end.to not_change {
  59. mail
  60. }
  61. end
  62. it 'ignores not existing tickets' do
  63. mail = {
  64. 'x-zammad-ticket-id': 1_234_567_890
  65. }
  66. expect do
  67. filter(mail)
  68. end.to not_change {
  69. mail
  70. }
  71. end
  72. end
  73. end