taskbar_spec.rb 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. require 'rails_helper'
  2. RSpec.describe Taskbar do
  3. context 'single creation' do
  4. let(:taskbar) do
  5. Taskbar.destroy_all
  6. UserInfo.current_user_id = 1
  7. create(:taskbar, params: {
  8. id: 1234,
  9. })
  10. end
  11. it 'existing key' do
  12. expect(taskbar.key).to eq('Ticket-1234')
  13. end
  14. it 'params' do
  15. expect(taskbar.params[:id]).to eq(1234)
  16. end
  17. it 'state' do
  18. expect(taskbar.state.blank?).to eq(true)
  19. end
  20. it 'check last_contact' do
  21. UserInfo.current_user_id = 1
  22. last_contact1 = taskbar.last_contact
  23. travel 2.minutes
  24. taskbar.notify = false
  25. taskbar.state = { a: 1 }
  26. taskbar.save!
  27. expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
  28. last_contact2 = taskbar.last_contact
  29. travel 2.minutes
  30. taskbar.notify = true
  31. taskbar.save!
  32. expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
  33. expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
  34. travel 2.minutes
  35. taskbar.notify = true
  36. taskbar.save!
  37. expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
  38. expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
  39. travel 2.minutes
  40. taskbar.notify = false
  41. taskbar.state = { a: 1 }
  42. taskbar.save!
  43. expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
  44. expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
  45. travel 2.minutes
  46. taskbar.notify = true
  47. taskbar.state = { a: 1 }
  48. taskbar.save!
  49. expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
  50. expect(taskbar.last_contact.to_s).to eq(last_contact2.to_s)
  51. travel 2.minutes
  52. taskbar.notify = true
  53. taskbar.state = { a: 2 }
  54. taskbar.save!
  55. expect(taskbar.last_contact.to_s).not_to eq(last_contact1.to_s)
  56. expect(taskbar.last_contact.to_s).not_to eq(last_contact2.to_s)
  57. end
  58. end
  59. context 'multible creation' do
  60. it 'create tasks' do
  61. Taskbar.destroy_all
  62. UserInfo.current_user_id = 1
  63. taskbar1 = Taskbar.create(
  64. client_id: 123,
  65. key: 'Ticket-1234',
  66. callback: 'TicketZoom',
  67. params: {
  68. id: 1234,
  69. },
  70. state: {},
  71. prio: 1,
  72. notify: false,
  73. )
  74. UserInfo.current_user_id = 2
  75. taskbar2 = Taskbar.create(
  76. client_id: 123,
  77. key: 'Ticket-1234',
  78. callback: 'TicketZoom',
  79. params: {
  80. id: 1234,
  81. },
  82. state: {},
  83. prio: 2,
  84. notify: false,
  85. )
  86. taskbar1.reload
  87. expect(taskbar1.preferences[:tasks].count).to eq(2)
  88. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  89. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
  90. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  91. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
  92. taskbar2.reload
  93. expect(taskbar2.preferences[:tasks].count).to eq(2)
  94. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  95. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
  96. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  97. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
  98. taskbar3 = Taskbar.create(
  99. client_id: 123,
  100. key: 'Ticket-4444',
  101. callback: 'TicketZoom',
  102. params: {
  103. id: 4444,
  104. },
  105. state: {},
  106. prio: 2,
  107. notify: false,
  108. )
  109. taskbar1.reload
  110. expect(taskbar1.preferences[:tasks].count).to eq(2)
  111. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  112. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
  113. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  114. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
  115. taskbar2.reload
  116. expect(taskbar2.preferences[:tasks].count).to eq(2)
  117. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  118. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
  119. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  120. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
  121. taskbar3.reload
  122. expect(taskbar3.preferences[:tasks].count).to eq(1)
  123. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  124. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  125. agent_user_id = create(:agent_user).id
  126. UserInfo.current_user_id = agent_user_id
  127. taskbar4 = Taskbar.create(
  128. client_id: 123,
  129. key: 'Ticket-1234',
  130. callback: 'TicketZoom',
  131. params: {
  132. id: 1234,
  133. },
  134. state: {},
  135. prio: 4,
  136. notify: false,
  137. )
  138. taskbar1.reload
  139. expect(taskbar1.preferences[:tasks].count).to eq(3)
  140. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  141. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
  142. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  143. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
  144. expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  145. expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
  146. taskbar2.reload
  147. expect(taskbar2.preferences[:tasks].count).to eq(3)
  148. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  149. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
  150. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  151. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
  152. expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  153. expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
  154. taskbar3.reload
  155. expect(taskbar3.preferences[:tasks].count).to eq(1)
  156. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  157. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  158. taskbar4.reload
  159. expect(taskbar4.preferences[:tasks].count).to eq(3)
  160. expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
  161. expect(taskbar4.preferences[:tasks][0][:changed]).to eq(false)
  162. expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
  163. expect(taskbar4.preferences[:tasks][1][:changed]).to eq(false)
  164. expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  165. expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
  166. UserInfo.current_user_id = 2
  167. taskbar2.state = { article: {}, ticket: {} }
  168. taskbar2.save!
  169. taskbar1.reload
  170. expect(taskbar1.preferences[:tasks].count).to eq(3)
  171. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  172. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
  173. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  174. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(false)
  175. expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  176. expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
  177. taskbar2.reload
  178. expect(taskbar2.preferences[:tasks].count).to eq(3)
  179. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  180. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
  181. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  182. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(false)
  183. expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  184. expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
  185. taskbar3.reload
  186. expect(taskbar3.preferences[:tasks].count).to eq(1)
  187. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  188. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  189. taskbar4.reload
  190. expect(taskbar4.preferences[:tasks].count).to eq(3)
  191. expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
  192. expect(taskbar4.preferences[:tasks][0][:changed]).to eq(false)
  193. expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
  194. expect(taskbar4.preferences[:tasks][1][:changed]).to eq(false)
  195. expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  196. expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
  197. UserInfo.current_user_id = 2
  198. taskbar2.state = { article: { body: 'some body' }, ticket: {} }
  199. taskbar2.save!
  200. taskbar1.reload
  201. expect(taskbar1.preferences[:tasks].count).to eq(3)
  202. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  203. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(false)
  204. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  205. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
  206. expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  207. expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
  208. taskbar2.reload
  209. expect(taskbar2.preferences[:tasks].count).to eq(3)
  210. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  211. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(false)
  212. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  213. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
  214. expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  215. expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
  216. taskbar3.reload
  217. expect(taskbar3.preferences[:tasks].count).to eq(1)
  218. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  219. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  220. taskbar4.reload
  221. expect(taskbar4.preferences[:tasks].count).to eq(3)
  222. expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
  223. expect(taskbar4.preferences[:tasks][0][:changed]).to eq(false)
  224. expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
  225. expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
  226. expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  227. expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
  228. UserInfo.current_user_id = 1
  229. taskbar1.state = { article: { body: '' }, ticket: { state_id: 123 } }
  230. taskbar1.save!
  231. taskbar1.reload
  232. expect(taskbar1.preferences[:tasks].count).to eq(3)
  233. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  234. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(true)
  235. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  236. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
  237. expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  238. expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
  239. taskbar2.reload
  240. expect(taskbar2.preferences[:tasks].count).to eq(3)
  241. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  242. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(true)
  243. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  244. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
  245. expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  246. expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
  247. taskbar3.reload
  248. expect(taskbar3.preferences[:tasks].count).to eq(1)
  249. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  250. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  251. taskbar4.reload
  252. expect(taskbar4.preferences[:tasks].count).to eq(3)
  253. expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
  254. expect(taskbar4.preferences[:tasks][0][:changed]).to eq(true)
  255. expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
  256. expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
  257. expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  258. expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
  259. taskbar1_last_contact = taskbar1.last_contact.to_s
  260. taskbar2_last_contact = taskbar2.last_contact.to_s
  261. taskbar3_last_contact = taskbar3.last_contact.to_s
  262. taskbar4_last_contact = taskbar4.last_contact.to_s
  263. travel 2.minutes
  264. UserInfo.current_user_id = 2
  265. taskbar2.state = { article: { body: 'some body' }, ticket: {} }
  266. taskbar2.notify = true
  267. taskbar2.save!
  268. taskbar1.reload
  269. expect(taskbar1.preferences[:tasks].count).to eq(3)
  270. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  271. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(true)
  272. expect(taskbar1.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
  273. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  274. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
  275. expect(taskbar1.preferences[:tasks][1][:last_contact].to_s).to eq(taskbar2_last_contact)
  276. expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  277. expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
  278. expect(taskbar1.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
  279. taskbar2.reload
  280. expect(taskbar2.preferences[:tasks].count).to eq(3)
  281. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  282. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(true)
  283. expect(taskbar2.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
  284. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  285. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
  286. expect(taskbar2.preferences[:tasks][1][:last_contact].to_s).to eq(taskbar2_last_contact)
  287. expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  288. expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
  289. expect(taskbar2.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
  290. taskbar3.reload
  291. expect(taskbar3.preferences[:tasks].count).to eq(1)
  292. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  293. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  294. expect(taskbar3.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar3_last_contact)
  295. taskbar4.reload
  296. expect(taskbar4.preferences[:tasks].count).to eq(3)
  297. expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
  298. expect(taskbar4.preferences[:tasks][0][:changed]).to eq(true)
  299. expect(taskbar4.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
  300. expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
  301. expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
  302. expect(taskbar4.preferences[:tasks][1][:last_contact].to_s).to eq(taskbar2_last_contact)
  303. expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  304. expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
  305. expect(taskbar4.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
  306. UserInfo.current_user_id = 2
  307. taskbar2.state = { article: { body: 'some body 222' }, ticket: {} }
  308. taskbar2.notify = true
  309. taskbar2.save!
  310. taskbar1.reload
  311. expect(taskbar1.preferences[:tasks].count).to eq(3)
  312. expect(taskbar1.preferences[:tasks][0][:user_id]).to eq(1)
  313. expect(taskbar1.preferences[:tasks][0][:changed]).to eq(true)
  314. expect(taskbar1.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
  315. expect(taskbar1.preferences[:tasks][1][:user_id]).to eq(2)
  316. expect(taskbar1.preferences[:tasks][1][:changed]).to eq(true)
  317. expect(taskbar1.preferences[:tasks][1][:last_contact].to_s).not_to eq(taskbar2_last_contact)
  318. expect(taskbar1.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  319. expect(taskbar1.preferences[:tasks][2][:changed]).to eq(false)
  320. expect(taskbar1.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
  321. taskbar2.reload
  322. expect(taskbar2.preferences[:tasks].count).to eq(3)
  323. expect(taskbar2.preferences[:tasks][0][:user_id]).to eq(1)
  324. expect(taskbar2.preferences[:tasks][0][:changed]).to eq(true)
  325. expect(taskbar2.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
  326. expect(taskbar2.preferences[:tasks][1][:user_id]).to eq(2)
  327. expect(taskbar2.preferences[:tasks][1][:changed]).to eq(true)
  328. expect(taskbar2.preferences[:tasks][1][:last_contact].to_s).not_to eq(taskbar2_last_contact)
  329. expect(taskbar2.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  330. expect(taskbar2.preferences[:tasks][2][:changed]).to eq(false)
  331. expect(taskbar2.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
  332. taskbar3.reload
  333. expect(taskbar3.preferences[:tasks].count).to eq(1)
  334. expect(taskbar3.preferences[:tasks][0][:user_id]).to eq(2)
  335. expect(taskbar3.preferences[:tasks][0][:changed]).to eq(false)
  336. expect(taskbar3.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar3_last_contact)
  337. taskbar4.reload
  338. expect(taskbar4.preferences[:tasks].count).to eq(3)
  339. expect(taskbar4.preferences[:tasks][0][:user_id]).to eq(1)
  340. expect(taskbar4.preferences[:tasks][0][:changed]).to eq(true)
  341. expect(taskbar4.preferences[:tasks][0][:last_contact].to_s).to eq(taskbar1_last_contact)
  342. expect(taskbar4.preferences[:tasks][1][:user_id]).to eq(2)
  343. expect(taskbar4.preferences[:tasks][1][:changed]).to eq(true)
  344. expect(taskbar4.preferences[:tasks][1][:last_contact].to_s).not_to eq(taskbar2_last_contact)
  345. expect(taskbar4.preferences[:tasks][2][:user_id]).to eq(agent_user_id)
  346. expect(taskbar4.preferences[:tasks][2][:changed]).to eq(false)
  347. expect(taskbar4.preferences[:tasks][2][:last_contact].to_s).to eq(taskbar4_last_contact)
  348. travel_back
  349. UserInfo.current_user_id = nil
  350. end
  351. end
  352. end