agent_ticket_tag_test.rb 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. require 'browser_test_helper'
  2. class AgentTicketTagTest < TestCase
  3. def test_a_tags
  4. @browser = browser_instance
  5. login(
  6. username: 'agent1@example.com',
  7. password: 'test',
  8. url: browser_url,
  9. )
  10. tasks_close_all()
  11. # set tag (by tab)
  12. ticket_create(
  13. data: {
  14. customer: 'nico',
  15. group: 'Users',
  16. title: 'some subject 123äöü - tags 1',
  17. body: 'some body 123äöü - tags 1',
  18. },
  19. do_not_submit: true,
  20. )
  21. sleep 1
  22. set(
  23. css: '.active .ticket-form-bottom .token-input',
  24. value: 'tag1, tag2',
  25. )
  26. sendkey(value: :tab)
  27. # reload browser
  28. sleep 6
  29. reload()
  30. sleep 2
  31. click(
  32. css: '.active .newTicket button.js-submit',
  33. )
  34. sleep 5
  35. if !@browser.current_url.match?(%r{#{Regexp.quote('#ticket/zoom/')}})
  36. raise 'Unable to create ticket!'
  37. end
  38. # verify tags
  39. tags_verify(
  40. tags: {
  41. 'tag1' => true,
  42. 'tag2' => true,
  43. 'tag3' => false,
  44. 'tag4' => false,
  45. }
  46. )
  47. # set tag (by blur)
  48. ticket_create(
  49. data: {
  50. customer: 'nico',
  51. group: 'Users',
  52. title: 'some subject 123äöü - tags 2',
  53. body: 'some body 123äöü - tags 2',
  54. },
  55. do_not_submit: true,
  56. )
  57. sleep 1
  58. set(
  59. css: '.active .ticket-form-bottom .token-input',
  60. value: 'tag3, tag4',
  61. )
  62. click(css: '#global-search')
  63. click(css: '.active .newTicket button.js-submit')
  64. sleep 5
  65. if !@browser.current_url.match?(%r{#{Regexp.quote('#ticket/zoom/')}})
  66. raise 'Unable to create ticket!'
  67. end
  68. # verify tags
  69. tags_verify(
  70. tags: {
  71. 'tag1' => false,
  72. 'tag2' => false,
  73. 'tag3' => true,
  74. 'tag4' => true,
  75. }
  76. )
  77. ticket3 = ticket_create(
  78. data: {
  79. customer: 'nico',
  80. group: 'Users',
  81. title: 'some subject 123äöü - tags 3',
  82. body: 'some body 123äöü - tags 3',
  83. },
  84. )
  85. # verify changes in second browser
  86. browser2 = browser_instance
  87. login(
  88. browser: browser2,
  89. username: 'master@example.com',
  90. password: 'test',
  91. url: browser_url,
  92. )
  93. ticket_open_by_search(
  94. browser: browser2,
  95. number: ticket3[:number],
  96. )
  97. empty_search(
  98. browser: browser2,
  99. )
  100. # set tag #1
  101. click(
  102. css: '.content.active .js-newTagLabel',
  103. )
  104. set(
  105. css: '.content.active .js-newTagInput',
  106. value: 'tag1',
  107. )
  108. sleep 2
  109. sendkey(
  110. value: :enter,
  111. )
  112. sleep 10
  113. # set tag #2
  114. click(
  115. css: '.content.active .js-newTagLabel',
  116. )
  117. set(
  118. css: '.content.active .js-newTagInput',
  119. value: 'tag 2',
  120. )
  121. sendkey(
  122. value: :enter,
  123. )
  124. sleep 10
  125. # set tag #3 + #4
  126. click(
  127. css: '.content.active .js-newTagLabel',
  128. )
  129. set(
  130. css: '.content.active .js-newTagInput',
  131. value: 'tag3, tag4',
  132. )
  133. sendkey(
  134. value: :enter,
  135. )
  136. sleep 10
  137. # set tag #5
  138. click(
  139. css: '.content.active .js-newTagLabel',
  140. )
  141. set(
  142. css: '.content.active .js-newTagInput',
  143. value: 'tag5',
  144. )
  145. click(
  146. css: '#global-search',
  147. )
  148. sleep 10
  149. # verify tags
  150. tags_verify(
  151. tags: {
  152. 'tag1' => true,
  153. 'tag 2' => true,
  154. 'tag2' => false,
  155. 'tag3' => true,
  156. 'tag4' => true,
  157. 'tag5' => true,
  158. }
  159. )
  160. sleep 4
  161. tags_verify(
  162. browser: browser2,
  163. tags: {
  164. 'tag1' => true,
  165. 'tag 2' => true,
  166. 'tag2' => false,
  167. 'tag3' => true,
  168. 'tag4' => true,
  169. 'tag5' => true,
  170. }
  171. )
  172. # reload browser
  173. reload()
  174. sleep 2
  175. # verify tags
  176. tags_verify(
  177. tags: {
  178. 'tag1' => true,
  179. 'tag 2' => true,
  180. 'tag2' => false,
  181. 'tag3' => true,
  182. 'tag4' => true,
  183. 'tag5' => true,
  184. }
  185. )
  186. tags_verify(
  187. browser: browser2,
  188. tags: {
  189. 'tag1' => true,
  190. 'tag 2' => true,
  191. 'tag2' => false,
  192. 'tag3' => true,
  193. 'tag4' => true,
  194. 'tag5' => true,
  195. }
  196. )
  197. # remove tag1
  198. click(
  199. css: '.content.active .tags .js-delete',
  200. )
  201. sleep 4
  202. # verify tags
  203. tags_verify(
  204. tags: {
  205. 'tag1' => false,
  206. 'tag 2' => true,
  207. 'tag2' => false,
  208. 'tag3' => true,
  209. 'tag4' => true,
  210. 'tag5' => true,
  211. }
  212. )
  213. tags_verify(
  214. browser: browser2,
  215. tags: {
  216. 'tag1' => false,
  217. 'tag 2' => true,
  218. 'tag2' => false,
  219. 'tag3' => true,
  220. 'tag4' => true,
  221. 'tag5' => true,
  222. }
  223. )
  224. # verify changes via admin interface
  225. click(
  226. browser: browser2,
  227. css: 'a[href="#manage"]',
  228. )
  229. click(
  230. browser: browser2,
  231. css: '.content.active a[href="#manage/tags"]',
  232. )
  233. sleep 3
  234. execute(
  235. browser: browser2,
  236. js: "$('.content.active .js-name:contains(\"tag3\")').click()",
  237. )
  238. modal_ready(
  239. browser: browser2,
  240. )
  241. set(
  242. browser: browser2,
  243. css: '.modal [name="name"]',
  244. value: 'TAGXX',
  245. )
  246. click(
  247. browser: browser2,
  248. css: '.modal .js-submit',
  249. )
  250. modal_disappear(browser: browser2)
  251. ticket_open_by_search(
  252. browser: browser2,
  253. number: ticket3[:number],
  254. )
  255. empty_search(
  256. browser: browser2,
  257. )
  258. # verify tags
  259. tags_verify(
  260. tags: {
  261. 'tag1' => false,
  262. 'tag 2' => true,
  263. 'tag2' => false,
  264. 'tag3' => false,
  265. 'tag4' => true,
  266. 'tag5' => true,
  267. 'TAGXX' => true,
  268. }
  269. )
  270. tags_verify(
  271. browser: browser2,
  272. tags: {
  273. 'tag1' => false,
  274. 'tag 2' => true,
  275. 'tag2' => false,
  276. 'tag3' => false,
  277. 'tag4' => true,
  278. 'tag5' => true,
  279. 'TAGXX' => true,
  280. }
  281. )
  282. click(
  283. browser: browser2,
  284. css: 'a[href="#manage"]',
  285. )
  286. click(
  287. browser: browser2,
  288. css: '.content.active a[href="#manage/tags"]',
  289. )
  290. sleep 3
  291. execute(
  292. browser: browser2,
  293. js: "$('.content.active .js-name:contains(\"tag5\")').closest('tr').find('.js-delete').click()",
  294. )
  295. modal_ready(
  296. browser: browser2,
  297. )
  298. click(
  299. browser: browser2,
  300. css: '.modal .js-submit',
  301. )
  302. modal_disappear(browser: browser2)
  303. ticket_open_by_search(
  304. browser: browser2,
  305. number: ticket3[:number],
  306. )
  307. # verify tags
  308. tags_verify(
  309. tags: {
  310. 'tag1' => false,
  311. 'tag 2' => true,
  312. 'tag2' => false,
  313. 'tag3' => false,
  314. 'tag4' => true,
  315. 'tag5' => false,
  316. 'TAGXX' => true,
  317. }
  318. )
  319. tags_verify(
  320. browser: browser2,
  321. tags: {
  322. 'tag1' => false,
  323. 'tag 2' => true,
  324. 'tag2' => false,
  325. 'tag3' => false,
  326. 'tag4' => true,
  327. 'tag5' => false,
  328. 'TAGXX' => true,
  329. }
  330. )
  331. end
  332. def test_b_tags
  333. tag_prefix = "tag#{rand(1000)}"
  334. @browser = browser_instance
  335. login(
  336. username: 'master@example.com',
  337. password: 'test',
  338. url: browser_url,
  339. )
  340. tasks_close_all()
  341. click(css: 'a[href="#manage"]')
  342. click(css: '.content.active a[href="#manage/tags"]')
  343. switch(
  344. css: '.content.active .js-newTagSetting',
  345. type: 'off',
  346. )
  347. set(
  348. css: '.content.active .js-create input[name="name"]',
  349. value: "#{tag_prefix} A",
  350. )
  351. click(css: '.content.active .js-create .js-submit')
  352. set(
  353. css: '.content.active .js-create input[name="name"]',
  354. value: "#{tag_prefix} a",
  355. )
  356. click(css: '.content.active .js-create .js-submit')
  357. set(
  358. css: '.content.active .js-create input[name="name"]',
  359. value: "#{tag_prefix} B",
  360. )
  361. click(css: '.content.active .js-create .js-submit')
  362. set(
  363. css: '.content.active .js-create input[name="name"]',
  364. value: "#{tag_prefix} C",
  365. )
  366. click(css: '.content.active .js-create .js-submit')
  367. # set tag (by tab)
  368. ticket_create(
  369. data: {
  370. customer: 'nico',
  371. group: 'Users',
  372. title: 'some subject 123äöü - tags no new 1',
  373. body: 'some body 123äöü - tags no new 1',
  374. },
  375. do_not_submit: true,
  376. )
  377. sleep 1
  378. set(
  379. css: '.active .ticket-form-bottom .token-input',
  380. value: "#{tag_prefix} A",
  381. )
  382. sleep 2
  383. sendkey(value: :tab)
  384. sleep 1
  385. set(
  386. css: '.active .ticket-form-bottom .token-input',
  387. value: "#{tag_prefix} a",
  388. )
  389. sleep 2
  390. sendkey(value: :tab)
  391. sleep 1
  392. set(
  393. css: '.active .ticket-form-bottom .token-input',
  394. value: "#{tag_prefix} B",
  395. )
  396. sleep 2
  397. sendkey(value: :tab)
  398. sleep 1
  399. set(
  400. css: '.active .ticket-form-bottom .token-input',
  401. value: 'NOT EXISTING',
  402. )
  403. sleep 2
  404. sendkey(value: :tab)
  405. sleep 1
  406. click(
  407. css: '.active .newTicket button.js-submit',
  408. )
  409. sleep 5
  410. if !@browser.current_url.match?(%r{#{Regexp.quote('#ticket/zoom/')}})
  411. raise 'Unable to create ticket!'
  412. end
  413. # verify tags
  414. tags_verify(
  415. tags: {
  416. "#{tag_prefix} A" => true,
  417. "#{tag_prefix} a" => true,
  418. "#{tag_prefix} B" => true,
  419. 'NOT EXISTING' => false,
  420. }
  421. )
  422. # new ticket with tags in zoom
  423. ticket_create(
  424. data: {
  425. customer: 'nico',
  426. group: 'Users',
  427. title: 'some subject 123äöü - tags no new 2',
  428. body: 'some body 223äöü - tags no new 1',
  429. },
  430. )
  431. sleep 2
  432. click(css: '.active .sidebar .js-newTagLabel')
  433. set(
  434. css: '.active .sidebar .js-newTagInput',
  435. value: "#{tag_prefix} A",
  436. )
  437. sleep 2
  438. sendkey(value: :tab)
  439. sleep 1
  440. click(css: '.active .sidebar .js-newTagLabel')
  441. set(
  442. css: '.active .sidebar .js-newTagInput',
  443. value: "#{tag_prefix} a",
  444. )
  445. sleep 2
  446. sendkey(value: :tab)
  447. sleep 1
  448. click(css: '.active .sidebar .js-newTagLabel')
  449. set(
  450. css: '.active .sidebar .js-newTagInput',
  451. value: "#{tag_prefix} B",
  452. )
  453. sleep 2
  454. sendkey(value: :tab)
  455. sleep 1
  456. click(css: '.active .sidebar .js-newTagLabel')
  457. set(
  458. css: '.active .sidebar .js-newTagInput',
  459. value: 'NOT EXISTING',
  460. )
  461. sleep 2
  462. sendkey(value: :tab)
  463. sleep 1
  464. # verify tags
  465. tags_verify(
  466. tags: {
  467. "#{tag_prefix} A" => true,
  468. "#{tag_prefix} a" => true,
  469. "#{tag_prefix} B" => true,
  470. 'NOT EXISTING' => false,
  471. }
  472. )
  473. reload()
  474. sleep 2
  475. # verify tags
  476. tags_verify(
  477. tags: {
  478. "#{tag_prefix} A" => true,
  479. "#{tag_prefix} a" => true,
  480. "#{tag_prefix} B" => true,
  481. 'NOT EXISTING' => false,
  482. }
  483. )
  484. click(css: 'a[href="#manage"]')
  485. click(css: '.content.active a[href="#manage/tags"]')
  486. switch(
  487. css: '.content.active .js-newTagSetting',
  488. type: 'on',
  489. )
  490. end
  491. end