activity_stream_test.rb 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. require 'test_helper'
  2. class ActivityStreamTest < ActiveSupport::TestCase
  3. setup do
  4. roles = Role.where(name: %w[Admin Agent])
  5. groups = Group.where(name: 'Users')
  6. @admin_user = User.create_or_update(
  7. login: 'admin',
  8. firstname: 'Bob',
  9. lastname: 'Smith',
  10. email: 'bob+active_stream@example.com',
  11. password: 'some_pass',
  12. active: true,
  13. roles: roles,
  14. groups: groups,
  15. updated_by_id: 1,
  16. created_by_id: 1
  17. )
  18. @current_user = User.lookup(email: 'nicole.braun@zammad.org')
  19. ActivityStream.delete_all
  20. end
  21. test 'ticket+user' do
  22. ticket = Ticket.create!(
  23. group_id: Group.lookup(name: 'Users').id,
  24. customer_id: @current_user.id,
  25. owner_id: User.lookup(login: '-').id,
  26. title: 'Unit Test 1 (äöüß)!',
  27. state_id: Ticket::State.lookup(name: 'new').id,
  28. priority_id: Ticket::Priority.lookup(name: '2 normal').id,
  29. updated_by_id: @current_user.id,
  30. created_by_id: @current_user.id,
  31. )
  32. travel 2.seconds
  33. article = Ticket::Article.create!(
  34. ticket_id: ticket.id,
  35. updated_by_id: @current_user.id,
  36. created_by_id: @current_user.id,
  37. type_id: Ticket::Article::Type.lookup(name: 'phone').id,
  38. sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
  39. from: 'Unit Test <unittest@example.com>',
  40. body: 'Unit Test 123',
  41. internal: false,
  42. )
  43. travel 100.seconds
  44. ticket.update!(
  45. title: 'Unit Test 1 (äöüß) - update!',
  46. state_id: Ticket::State.lookup(name: 'open').id,
  47. priority_id: Ticket::Priority.lookup(name: '1 low').id,
  48. )
  49. updated_at = ticket.updated_at
  50. travel 1.second
  51. ticket.update!(
  52. title: 'Unit Test 2 (äöüß) - update!',
  53. priority_id: Ticket::Priority.lookup(name: '2 normal').id,
  54. )
  55. # check activity_stream
  56. stream = @admin_user.activity_stream(4)
  57. assert_equal(stream[0]['group_id'], ticket.group_id)
  58. assert_equal(stream[0]['o_id'], ticket.id)
  59. assert_equal(stream[0]['created_by_id'], @current_user.id)
  60. assert_equal(stream[0]['created_at'].to_s, updated_at.to_s)
  61. assert_equal(stream[0]['object'], 'Ticket')
  62. assert_equal(stream[0]['type'], 'update')
  63. assert_equal(stream[1]['group_id'], ticket.group_id)
  64. assert_equal(stream[1]['o_id'], article.id)
  65. assert_equal(stream[1]['created_by_id'], @current_user.id)
  66. assert_equal(stream[1]['created_at'].to_s, article.created_at.to_s)
  67. assert_equal(stream[1]['object'], 'Ticket::Article')
  68. assert_equal(stream[1]['type'], 'create')
  69. assert_equal(stream[2]['group_id'], ticket.group_id)
  70. assert_equal(stream[2]['o_id'], ticket.id)
  71. assert_equal(stream[2]['created_by_id'], @current_user.id)
  72. assert_equal(stream[2]['created_at'].to_s, ticket.created_at.to_s)
  73. assert_equal(stream[2]['object'], 'Ticket')
  74. assert_equal(stream[2]['type'], 'create')
  75. assert_not(stream[3])
  76. stream = @current_user.activity_stream(4)
  77. assert(stream.blank?)
  78. # cleanup
  79. ticket.destroy!
  80. travel_back
  81. end
  82. test 'organization' do
  83. organization = Organization.create!(
  84. name: 'some name',
  85. updated_by_id: @current_user.id,
  86. created_by_id: @current_user.id,
  87. )
  88. travel 100.seconds
  89. assert_equal(organization.class, Organization)
  90. organization.update!(name: 'some name (äöüß)')
  91. updated_at = organization.updated_at
  92. travel 10.seconds
  93. organization.update!(name: 'some name 2 (äöüß)')
  94. # check activity_stream
  95. stream = @admin_user.activity_stream(3)
  96. assert_not(stream[0]['group_id'])
  97. assert_equal(stream[0]['o_id'], organization.id)
  98. assert_equal(stream[0]['created_by_id'], @current_user.id)
  99. assert_equal(stream[0]['created_at'].to_s, updated_at.to_s)
  100. assert_equal(stream[0]['object'], 'Organization')
  101. assert_equal(stream[0]['type'], 'update')
  102. assert_not(stream[1]['group_id'])
  103. assert_equal(stream[1]['o_id'], organization.id)
  104. assert_equal(stream[1]['created_by_id'], @current_user.id)
  105. assert_equal(stream[1]['created_at'].to_s, organization.created_at.to_s)
  106. assert_equal(stream[1]['object'], 'Organization')
  107. assert_equal(stream[1]['type'], 'create')
  108. assert_not(stream[2])
  109. stream = @current_user.activity_stream(4)
  110. assert(stream.blank?)
  111. # cleanup
  112. organization.destroy!
  113. travel_back
  114. end
  115. test 'user with update check false' do
  116. user = User.create!(
  117. login: 'someemail@example.com',
  118. email: 'someemail@example.com',
  119. firstname: 'Bob Smith II',
  120. updated_by_id: @current_user.id,
  121. created_by_id: @current_user.id,
  122. )
  123. assert_equal(user.class, User)
  124. user.update!(
  125. firstname: 'Bob U',
  126. lastname: 'Smith U',
  127. )
  128. # check activity_stream
  129. stream = @admin_user.activity_stream(3)
  130. assert_not(stream[0]['group_id'])
  131. assert_equal(stream[0]['o_id'], user.id)
  132. assert_equal(stream[0]['created_by_id'], @current_user.id)
  133. assert_equal(stream[0]['created_at'].to_s, user.created_at.to_s)
  134. assert_equal(stream[0]['object'], 'User')
  135. assert_equal(stream[0]['type'], 'create')
  136. assert_not(stream[1])
  137. stream = @current_user.activity_stream(4)
  138. assert(stream.blank?)
  139. # cleanup
  140. user.destroy!
  141. travel_back
  142. end
  143. test 'user with update check true' do
  144. user = User.create!(
  145. login: 'someemail@example.com',
  146. email: 'someemail@example.com',
  147. firstname: 'Bob Smith II',
  148. updated_by_id: @current_user.id,
  149. created_by_id: @current_user.id,
  150. )
  151. travel 100.seconds
  152. assert_equal(user.class, User)
  153. user.update!(
  154. firstname: 'Bob U',
  155. lastname: 'Smith U',
  156. )
  157. updated_at = user.updated_at
  158. travel 10.seconds
  159. user.update!(
  160. firstname: 'Bob',
  161. lastname: 'Smith',
  162. )
  163. # check activity_stream
  164. stream = @admin_user.activity_stream(3)
  165. assert_not(stream[0]['group_id'])
  166. assert_equal(stream[0]['o_id'], user.id)
  167. assert_equal(stream[0]['created_by_id'], @current_user.id)
  168. assert_equal(stream[0]['created_at'].to_s, updated_at.to_s)
  169. assert_equal(stream[0]['object'], 'User')
  170. assert_equal(stream[0]['type'], 'update')
  171. assert_not(stream[1]['group_id'])
  172. assert_equal(stream[1]['o_id'], user.id)
  173. assert_equal(stream[1]['created_by_id'], @current_user.id)
  174. assert_equal(stream[1]['created_at'].to_s, user.created_at.to_s)
  175. assert_equal(stream[1]['object'], 'User')
  176. assert_equal(stream[1]['type'], 'create')
  177. assert_not(stream[2])
  178. stream = @current_user.activity_stream(4)
  179. assert(stream.blank?)
  180. # cleanup
  181. user.destroy!
  182. travel_back
  183. end
  184. end