session_basic_ticket_test.rb 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class SessionBasicTicketTest < ActiveSupport::TestCase
  4. setup do
  5. UserInfo.current_user_id = 1
  6. roles = Role.where(name: ['Agent'])
  7. groups = Group.all
  8. @agent1 = User.create_or_update(
  9. login: 'session-basic-ticket-agent-1',
  10. firstname: 'Session',
  11. lastname: 'session basic ' + rand(99_999).to_s,
  12. email: 'session-basic-ticket-agent-1@example.com',
  13. password: 'agentpw',
  14. active: true,
  15. roles: roles,
  16. groups: groups,
  17. )
  18. @agent2 = User.create_or_update(
  19. login: 'session-basic-ticket-agent-2',
  20. firstname: 'Session',
  21. lastname: 'session basic ' + rand(99_999).to_s,
  22. email: 'session-basic-ticket-agent-2@example.com',
  23. password: 'agentpw',
  24. active: true,
  25. roles: roles,
  26. groups: groups,
  27. )
  28. Overview.destroy_all
  29. load "#{Rails.root}/db/seeds/overviews.rb"
  30. end
  31. test 'asset needed' do
  32. client1 = Sessions::Backend::TicketOverviewList.new(@agent1, {}, false, '123-1', 2)
  33. client2 = Sessions::Backend::TicketOverviewList.new(@agent2, {}, false, '123-2', 2)
  34. ticket = Ticket.create!(title: 'default overview test', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
  35. assert(client1.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  36. client1.asset_push(ticket, {})
  37. assert_not(client1.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  38. assert(client2.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  39. client2.asset_push(ticket, {})
  40. assert_not(client2.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  41. travel 30.minutes
  42. assert_not(client1.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  43. assert_not(client2.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  44. travel 120.minutes
  45. assert(client1.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  46. client1.asset_push(ticket, {})
  47. assert(client2.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  48. client2.asset_push(ticket, {})
  49. assert_not(client1.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  50. client1.asset_push(ticket, {})
  51. assert_not(client2.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  52. client2.asset_push(ticket, {})
  53. ticket.touch
  54. assert(client1.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  55. client1.asset_push(ticket, {})
  56. assert(client2.asset_needed_by_updated_at?(ticket.class.to_s, ticket.id, ticket.updated_at))
  57. client2.asset_push(ticket, {})
  58. assert_not(client1.asset_needed?(ticket))
  59. assert_not(client2.asset_needed?(ticket))
  60. travel 125.minutes
  61. assert(client1.asset_needed?(ticket))
  62. client1.asset_push(ticket, {})
  63. assert(client2.asset_needed?(ticket))
  64. client2.asset_push(ticket, {})
  65. assert_not(client1.asset_needed?(ticket))
  66. assert_not(client2.asset_needed?(ticket))
  67. travel_back
  68. end
  69. test 'ticket_overview_List' do
  70. ticket1 = Ticket.create!(title: 'default overview test 1', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
  71. ticket2 = Ticket.create!(title: 'default overview test 2', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
  72. client1 = Sessions::Backend::TicketOverviewList.new(@agent1, {}, false, '123-1', 2)
  73. result1 = client1.push
  74. assert(result1, 'check ticket_overview_List')
  75. assert(result1[1][:data][:assets])
  76. assert(result1[1][:data][:assets][:Overview])
  77. assert(result1[1][:data][:assets][:User])
  78. assert_equal(result1[1][:data][:assets][:Ticket][ticket1.id]['title'], ticket1.title)
  79. assert_equal(result1[1][:data][:assets][:Ticket][ticket2.id]['title'], ticket2.title)
  80. # next check should be empty / no changes
  81. result1 = client1.push
  82. assert(!result1, 'check ticket_overview_index - recall')
  83. # next check should be empty / no changes
  84. travel 3.seconds
  85. result1 = client1.push
  86. assert(!result1, 'check ticket_overview_index - recall 2')
  87. # create ticket
  88. ticket3 = Ticket.create!(title: '12323', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
  89. travel 3.seconds
  90. result1 = client1.push
  91. assert(result1, 'check ticket_overview_index - recall 3')
  92. assert(result1[1][:data][:assets])
  93. assert_not(result1[1][:data][:assets][:Ticket][ticket1.id])
  94. assert_not(result1[1][:data][:assets][:Ticket][ticket2.id])
  95. assert_equal(result1[1][:data][:assets][:Ticket][ticket3.id]['title'], ticket3.title)
  96. travel 3.seconds
  97. # chnage overview
  98. overviews = Ticket::Overviews.all(
  99. current_user: @agent1,
  100. )
  101. overviews.first.touch
  102. result1 = client1.push
  103. assert(result1, 'check ticket_overview_index - recall 4')
  104. assert(result1[1][:data][:assets])
  105. assert_not(result1[1][:data][:assets][:Ticket])
  106. result1 = client1.push
  107. assert(!result1, 'check ticket_overview_index - recall 5')
  108. Sessions::Backend::TicketOverviewList.reset(@agent1.id)
  109. result1 = client1.push
  110. assert(!result1, 'check ticket_overview_index - recall 6')
  111. ticket4 = Ticket.create!(title: '12323 - 2', group_id: 1, priority_id: 1, state_id: 1, customer_id: 1)
  112. Sessions::Backend::TicketOverviewList.reset(@agent1.id)
  113. result1 = client1.push
  114. assert(result1, 'check ticket_overview_index - recall 7')
  115. assert(result1[1][:data][:assets])
  116. assert_not(result1[1][:data][:assets][:Ticket][ticket1.id])
  117. assert_not(result1[1][:data][:assets][:Ticket][ticket2.id])
  118. assert_not(result1[1][:data][:assets][:Ticket][ticket3.id])
  119. assert_equal(result1[1][:data][:assets][:Ticket][ticket4.id]['title'], ticket4.title)
  120. travel 125.minutes
  121. ticket1.touch
  122. result1 = client1.push
  123. assert(result1, 'check ticket_overview_index - recall 8')
  124. assert(result1[1][:data][:assets])
  125. assert_equal(result1[1][:data][:assets][:Ticket][ticket1.id]['title'], ticket1.title)
  126. assert_equal(result1[1][:data][:assets][:Ticket][ticket2.id]['title'], ticket2.title)
  127. assert_equal(result1[1][:data][:assets][:Ticket][ticket3.id]['title'], ticket3.title)
  128. assert_equal(result1[1][:data][:assets][:Ticket][ticket4.id]['title'], ticket4.title)
  129. travel 10.seconds
  130. Sessions.destroy_idle_sessions(3)
  131. travel_back
  132. end
  133. end