article.rb 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. FactoryBot.define do
  3. factory :'ticket/article', aliases: %i[ticket_article] do
  4. inbound_email
  5. association :ticket, strategy: :create # or else build(:ticket_article).save fails
  6. from { 'factory-customer-1@example.com' }
  7. to { 'factory-customer-1@example.com' }
  8. subject { 'factory article' }
  9. message_id { 'factory@id_com_1' }
  10. body { 'some message 123' }
  11. internal { false }
  12. sender { Ticket::Article::Sender.find_by(name: sender_name) }
  13. type { Ticket::Article::Type.find_by(name: type_name) }
  14. updated_by_id { 1 }
  15. created_by_id { 1 }
  16. trait :inbound_email do
  17. transient do
  18. type_name { 'email' }
  19. sender_name { 'Customer' }
  20. end
  21. end
  22. trait :outbound_email do
  23. transient do
  24. type_name { 'email' }
  25. sender_name { 'Agent' }
  26. end
  27. from { ticket.group.name }
  28. to { "#{ticket.customer.fullname} <#{ticket.customer.email}>" }
  29. end
  30. trait :inbound_phone do
  31. transient do
  32. type_name { 'phone' }
  33. sender_name { 'Customer' }
  34. end
  35. end
  36. trait :outbound_phone do
  37. transient do
  38. type_name { 'phone' }
  39. sender_name { 'Agent' }
  40. end
  41. from { nil }
  42. to { ticket.customer.fullname }
  43. end
  44. trait :outbound_note do
  45. transient do
  46. type_name { 'note' }
  47. sender_name { 'Agent' }
  48. end
  49. from { ticket.group.name }
  50. end
  51. trait :inbound_web do
  52. transient do
  53. type_name { 'web' }
  54. sender_name { 'Customer' }
  55. end
  56. end
  57. trait :outbound_web do
  58. transient do
  59. type_name { 'web' }
  60. sender_name { 'Agent' }
  61. end
  62. end
  63. factory :twitter_article do
  64. transient do
  65. type_name { 'twitter status' }
  66. end
  67. association :ticket, factory: :twitter_ticket
  68. message_id { '775410014383026176' }
  69. body { Faker::Lorem.sentence }
  70. sender_name { 'Agent' }
  71. trait :reply do
  72. in_reply_to { Faker::Number.number(digits: 19) }
  73. end
  74. end
  75. factory :twitter_dm_article do
  76. transient do
  77. type_name { 'twitter direct-message' }
  78. end
  79. association :ticket, factory: :twitter_ticket
  80. body { Faker::Lorem.sentence }
  81. trait :pending_delivery do
  82. transient do
  83. recipient { create(:twitter_authorization) }
  84. sender_id { Faker::Number.number(digits: 10) }
  85. end
  86. from { ticket.owner.fullname }
  87. to { recipient.username }
  88. in_reply_to { Faker::Number.number(digits: 19) }
  89. content_type { 'text/plain' }
  90. end
  91. trait :delivered do
  92. pending_delivery
  93. message_id { Faker::Number.number(digits: 19) }
  94. preferences do
  95. {
  96. delivery_retry: 1,
  97. twitter: {
  98. recipient_id: recipient.uid,
  99. sender_id: sender_id
  100. },
  101. links: [
  102. {
  103. url: "https://twitter.com/messages/#{recipient.uid}-#{sender_id}",
  104. target: '_blank',
  105. name: 'on Twitter'
  106. }
  107. ],
  108. delivery_status_message: nil,
  109. delivery_status: 'success',
  110. delivery_status_date: Time.current
  111. }
  112. end
  113. end
  114. end
  115. end
  116. end