agent_ticket_tag_test.rb 11 KB

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