overviews_controller_test.rb 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. require 'test_helper'
  2. class OverviewsControllerTest < ActionDispatch::IntegrationTest
  3. setup do
  4. # set accept header
  5. @headers = { 'ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json' }
  6. # create agent
  7. roles = Role.where(name: %w[Admin Agent])
  8. groups = Group.all
  9. UserInfo.current_user_id = 1
  10. @admin = User.create!(
  11. login: 'tickets-admin',
  12. firstname: 'Tickets',
  13. lastname: 'Admin',
  14. email: 'tickets-admin@example.com',
  15. password: 'adminpw',
  16. active: true,
  17. roles: roles,
  18. groups: groups,
  19. )
  20. # create agent
  21. roles = Role.where(name: 'Agent')
  22. @agent = User.create!(
  23. login: 'tickets-agent@example.com',
  24. firstname: 'Tickets',
  25. lastname: 'Agent',
  26. email: 'tickets-agent@example.com',
  27. password: 'agentpw',
  28. active: true,
  29. roles: roles,
  30. groups: Group.all,
  31. )
  32. end
  33. test 'no permissions' do
  34. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-agent', 'agentpw')
  35. params = {
  36. name: 'Overview2',
  37. link: 'my_overview',
  38. roles: Role.where(name: 'Agent').pluck(:name),
  39. condition: {
  40. 'ticket.state_id' => {
  41. operator: 'is',
  42. value: [1, 2, 3],
  43. },
  44. },
  45. order: {
  46. by: 'created_at',
  47. direction: 'DESC',
  48. },
  49. view: {
  50. d: %w[title customer state created_at],
  51. s: %w[number title customer state created_at],
  52. m: %w[number title customer state created_at],
  53. view_mode_default: 's',
  54. },
  55. }
  56. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  57. assert_response(401)
  58. result = JSON.parse(@response.body)
  59. assert_equal(Hash, result.class)
  60. assert_equal('authentication failed', result['error'])
  61. end
  62. test 'create overviews' do
  63. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-admin', 'adminpw')
  64. params = {
  65. name: 'Overview2',
  66. link: 'my_overview',
  67. roles: Role.where(name: 'Agent').pluck(:name),
  68. condition: {
  69. 'ticket.state_id' => {
  70. operator: 'is',
  71. value: [1, 2, 3],
  72. },
  73. },
  74. order: {
  75. by: 'created_at',
  76. direction: 'DESC',
  77. },
  78. view: {
  79. d: %w[title customer state created_at],
  80. s: %w[number title customer state created_at],
  81. m: %w[number title customer state created_at],
  82. view_mode_default: 's',
  83. },
  84. }
  85. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  86. assert_response(201)
  87. result = JSON.parse(@response.body)
  88. assert_equal(Hash, result.class)
  89. assert_equal('Overview2', result['name'])
  90. assert_equal('my_overview', result['link'])
  91. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  92. assert_response(201)
  93. result = JSON.parse(@response.body)
  94. assert_equal(Hash, result.class)
  95. assert_equal('Overview2', result['name'])
  96. assert_equal('my_overview_1', result['link'])
  97. end
  98. test 'set mass prio' do
  99. roles = Role.where(name: 'Agent')
  100. overview1 = Overview.create!(
  101. name: 'Overview1',
  102. link: 'my_overview',
  103. roles: roles,
  104. condition: {
  105. 'ticket.state_id' => {
  106. operator: 'is',
  107. value: [1, 2, 3],
  108. },
  109. },
  110. order: {
  111. by: 'created_at',
  112. direction: 'DESC',
  113. },
  114. view: {
  115. d: %w[title customer state created_at],
  116. s: %w[number title customer state created_at],
  117. m: %w[number title customer state created_at],
  118. view_mode_default: 's',
  119. },
  120. prio: 1,
  121. updated_by_id: 1,
  122. created_by_id: 1,
  123. )
  124. overview2 = Overview.create!(
  125. name: 'Overview2',
  126. link: 'my_overview',
  127. roles: roles,
  128. condition: {
  129. 'ticket.state_id' => {
  130. operator: 'is',
  131. value: [1, 2, 3],
  132. },
  133. },
  134. order: {
  135. by: 'created_at',
  136. direction: 'DESC',
  137. },
  138. view: {
  139. d: %w[title customer state created_at],
  140. s: %w[number title customer state created_at],
  141. m: %w[number title customer state created_at],
  142. view_mode_default: 's',
  143. },
  144. prio: 2,
  145. updated_by_id: 1,
  146. created_by_id: 1,
  147. )
  148. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-admin', 'adminpw')
  149. params = {
  150. prios: [
  151. [overview2.id, 1],
  152. [overview1.id, 2],
  153. ]
  154. }
  155. post '/api/v1/overviews_prio', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  156. assert_response(200)
  157. result = JSON.parse(@response.body)
  158. assert_equal(Hash, result.class)
  159. assert_equal(true, result['success'])
  160. overview1.reload
  161. overview2.reload
  162. assert_equal(2, overview1.prio)
  163. assert_equal(1, overview2.prio)
  164. end
  165. test 'create an overview with group_by direction' do
  166. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-admin', 'adminpw')
  167. params = {
  168. name: 'Overview2',
  169. link: 'my_overview',
  170. roles: Role.where(name: 'Agent').pluck(:name),
  171. condition: {
  172. 'ticket.state_id' => {
  173. operator: 'is',
  174. value: [1, 2, 3],
  175. },
  176. },
  177. order: {
  178. by: 'created_at',
  179. direction: 'DESC',
  180. },
  181. group_by: 'priority',
  182. group_direction: 'ASC',
  183. view: {
  184. d: %w[title customer state created_at],
  185. s: %w[number title customer state created_at],
  186. m: %w[number title customer state created_at],
  187. view_mode_default: 's',
  188. },
  189. }
  190. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  191. assert_response(201)
  192. result = JSON.parse(@response.body)
  193. assert_equal(Hash, result.class)
  194. assert_equal('Overview2', result['name'])
  195. assert_equal('my_overview', result['link'])
  196. assert_equal('priority', result['group_by'])
  197. assert_equal('ASC', result['group_direction'])
  198. end
  199. end