activity_stream_test.rb 6.5 KB

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