report_test.rb 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753
  1. # encoding: utf-8
  2. require 'integration_test_helper'
  3. class ReportTest < ActiveSupport::TestCase
  4. # set config
  5. if !ENV['ES_URL']
  6. raise "ERROR: Need ES_URL - hint ES_URL='http://172.0.0.1:9200'"
  7. end
  8. Setting.set('es_url', ENV['ES_URL'])
  9. if !ENV['ES_INDEX'] && !ENV['ES_INDEX_RAND']
  10. raise "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
  11. end
  12. if ENV['ES_INDEX_RAND']
  13. ENV['ES_INDEX'] = "es_index_#{rand(999_999_999)}"
  14. end
  15. Setting.set('es_index', ENV['ES_INDEX'])
  16. # Setting.set('es_url', 'http://172.0.0.1:9200')
  17. # Setting.set('es_index', 'estest.local_zammad')
  18. # Setting.set('es_user', 'elasticsearch')
  19. # Setting.set('es_password', 'zammad')
  20. # Setting.set('es_attachment_max_size_in_mb', 1 )
  21. Ticket.destroy_all
  22. # drop/create indexes
  23. #Rake::Task["searchindex:drop"].execute
  24. #Rake::Task["searchindex:create"].execute
  25. system('rake searchindex:rebuild')
  26. Group.create_if_not_exists(
  27. name: 'Report Test',
  28. updated_by_id: 1,
  29. created_by_id: 1
  30. )
  31. ticket1 = Ticket.create(
  32. title: 'test 1',
  33. group: Group.lookup(name: 'Report Test'),
  34. customer_id: 2,
  35. state: Ticket::State.lookup(name: 'new'),
  36. priority: Ticket::Priority.lookup(name: '2 normal'),
  37. created_at: '2015-10-28 09:30:00 UTC',
  38. updated_at: '2015-10-28 09:30:00 UTC',
  39. updated_by_id: 1,
  40. created_by_id: 1,
  41. )
  42. article1 = Ticket::Article.create(
  43. ticket_id: ticket1.id,
  44. from: 'some_sender@example.com',
  45. to: 'some_recipient@example.com',
  46. subject: 'some subject',
  47. message_id: 'some@id',
  48. body: 'some message article_inbound',
  49. internal: false,
  50. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  51. type: Ticket::Article::Type.where(name: 'email').first,
  52. created_at: '2015-10-28 09:30:00 UTC',
  53. updated_at: '2015-10-28 09:30:00 UTC',
  54. updated_by_id: 1,
  55. created_by_id: 1,
  56. )
  57. ticket1.update_attributes(
  58. group: Group.lookup(name: 'Users'),
  59. updated_at: '2015-10-28 14:30:00 UTC',
  60. )
  61. ticket2 = Ticket.create(
  62. title: 'test 2',
  63. group: Group.lookup(name: 'Users'),
  64. customer_id: 2,
  65. state: Ticket::State.lookup(name: 'new'),
  66. priority: Ticket::Priority.lookup(name: '2 normal'),
  67. created_at: '2015-10-28 09:30:00 UTC',
  68. updated_at: '2015-10-28 09:30:00 UTC',
  69. updated_by_id: 1,
  70. created_by_id: 1,
  71. )
  72. article2 = Ticket::Article.create(
  73. ticket_id: ticket2.id,
  74. from: 'some_sender@example.com',
  75. to: 'some_recipient@example.com',
  76. subject: 'some subject',
  77. message_id: 'some@id',
  78. body: 'some message article_inbound',
  79. internal: false,
  80. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  81. type: Ticket::Article::Type.where(name: 'email').first,
  82. created_at: '2015-10-28 09:30:00 UTC',
  83. updated_at: '2015-10-28 09:30:00 UTC',
  84. updated_by_id: 1,
  85. created_by_id: 1,
  86. )
  87. ticket2.update_attributes(
  88. group_id: Group.lookup(name: 'Report Test').id,
  89. updated_at: '2015-10-28 14:30:00 UTC',
  90. )
  91. ticket3 = Ticket.create(
  92. title: 'test 3',
  93. group: Group.lookup(name: 'Users'),
  94. customer_id: 2,
  95. state: Ticket::State.lookup(name: 'open'),
  96. priority: Ticket::Priority.lookup(name: '3 high'),
  97. created_at: '2015-10-28 10:30:00 UTC',
  98. updated_at: '2015-10-28 10:30:00 UTC',
  99. updated_by_id: 1,
  100. created_by_id: 1,
  101. )
  102. article3 = Ticket::Article.create(
  103. ticket_id: ticket3.id,
  104. from: 'some_sender@example.com',
  105. to: 'some_recipient@example.com',
  106. subject: 'some subject',
  107. message_id: 'some@id',
  108. body: 'some message article_inbound',
  109. internal: false,
  110. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  111. type: Ticket::Article::Type.where(name: 'email').first,
  112. created_at: '2015-10-28 10:30:00 UTC',
  113. updated_at: '2015-10-28 10:30:00 UTC',
  114. updated_by_id: 1,
  115. created_by_id: 1,
  116. )
  117. ticket4 = Ticket.create(
  118. title: 'test 4',
  119. group: Group.lookup(name: 'Users'),
  120. customer_id: 2,
  121. state: Ticket::State.lookup(name: 'closed'),
  122. priority: Ticket::Priority.lookup(name: '2 normal'),
  123. close_time: '2015-10-28 11:30:00 UTC',
  124. created_at: '2015-10-28 10:30:00 UTC',
  125. updated_at: '2015-10-28 10:30:00 UTC',
  126. updated_by_id: 1,
  127. created_by_id: 1,
  128. )
  129. article4 = Ticket::Article.create(
  130. ticket_id: ticket4.id,
  131. from: 'some_sender@example.com',
  132. to: 'some_recipient@example.com',
  133. subject: 'some subject',
  134. message_id: 'some@id',
  135. body: 'some message article_inbound',
  136. internal: false,
  137. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  138. type: Ticket::Article::Type.where(name: 'email').first,
  139. created_at: '2015-10-28 10:30:00 UTC',
  140. updated_at: '2015-10-28 10:30:00 UTC',
  141. updated_by_id: 1,
  142. created_by_id: 1,
  143. )
  144. ticket5 = Ticket.create(
  145. title: 'test 5',
  146. group: Group.lookup(name: 'Users'),
  147. customer_id: 2,
  148. state: Ticket::State.lookup(name: 'closed'),
  149. priority: Ticket::Priority.lookup(name: '3 high'),
  150. close_time: '2015-10-28 11:40:00 UTC',
  151. created_at: '2015-10-28 11:30:00 UTC',
  152. updated_at: '2015-10-28 11:30:00 UTC',
  153. updated_by_id: 1,
  154. created_by_id: 1,
  155. )
  156. article5 = Ticket::Article.create(
  157. ticket_id: ticket5.id,
  158. from: 'some_sender@example.com',
  159. to: 'some_recipient@example.com',
  160. subject: 'some subject',
  161. message_id: 'some@id',
  162. body: 'some message article_outbound',
  163. internal: false,
  164. sender: Ticket::Article::Sender.where(name: 'Agent').first,
  165. type: Ticket::Article::Type.where(name: 'email').first,
  166. created_at: '2015-10-28 11:30:00 UTC',
  167. updated_at: '2015-10-28 11:30:00 UTC',
  168. updated_by_id: 1,
  169. created_by_id: 1,
  170. )
  171. ticket5.update_attributes(
  172. state: Ticket::State.lookup(name: 'open'),
  173. updated_at: '2015-10-28 14:30:00 UTC',
  174. )
  175. ticket6 = Ticket.create(
  176. title: 'test 6',
  177. group: Group.lookup(name: 'Users'),
  178. customer_id: 2,
  179. state: Ticket::State.lookup(name: 'closed'),
  180. priority: Ticket::Priority.lookup(name: '2 normal'),
  181. close_time: '2015-10-31 12:35:00 UTC',
  182. created_at: '2015-10-31 12:30:00 UTC',
  183. updated_at: '2015-10-31 12:30:00 UTC',
  184. updated_by_id: 1,
  185. created_by_id: 1,
  186. )
  187. article6 = Ticket::Article.create(
  188. ticket_id: ticket6.id,
  189. from: 'some_sender@example.com',
  190. to: 'some_recipient@example.com',
  191. subject: 'some subject',
  192. message_id: 'some@id',
  193. body: 'some message article_outbound',
  194. internal: false,
  195. sender: Ticket::Article::Sender.where(name: 'Agent').first,
  196. type: Ticket::Article::Type.where(name: 'email').first,
  197. created_at: '2015-10-31 12:30:00 UTC',
  198. updated_at: '2015-10-31 12:30:00 UTC',
  199. updated_by_id: 1,
  200. created_by_id: 1,
  201. )
  202. ticket7 = Ticket.create(
  203. title: 'test 7',
  204. group: Group.lookup(name: 'Users'),
  205. customer_id: 2,
  206. state: Ticket::State.lookup(name: 'closed'),
  207. priority: Ticket::Priority.lookup(name: '2 normal'),
  208. close_time: '2015-11-01 12:30:00 UTC',
  209. created_at: '2015-11-01 12:30:00 UTC',
  210. updated_at: '2015-11-01 12:30:00 UTC',
  211. updated_by_id: 1,
  212. created_by_id: 1,
  213. )
  214. article7 = Ticket::Article.create(
  215. ticket_id: ticket7.id,
  216. from: 'some_sender@example.com',
  217. to: 'some_recipient@example.com',
  218. subject: 'some subject',
  219. message_id: 'some@id',
  220. body: 'some message article_outbound',
  221. internal: false,
  222. sender: Ticket::Article::Sender.where(name: 'Agent').first,
  223. type: Ticket::Article::Type.where(name: 'email').first,
  224. created_at: '2015-11-01 12:30:00 UTC',
  225. updated_at: '2015-11-01 12:30:00 UTC',
  226. updated_by_id: 1,
  227. created_by_id: 1,
  228. )
  229. # execute background jobs
  230. #puts Delayed::Job.all.inspect
  231. Delayed::Worker.new.work_off
  232. sleep 6
  233. test 'a - first solution' do
  234. # month
  235. result = Report::TicketFirstSolution.aggs(
  236. range_start: '2015-01-01T00:00:00Z',
  237. range_end: '2015-12-31T23:59:59Z',
  238. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  239. selector: {}, # ticket selector to get only a collection of tickets
  240. )
  241. assert(result)
  242. assert_equal(0, result[0])
  243. assert_equal(0, result[1])
  244. assert_equal(0, result[2])
  245. assert_equal(0, result[3])
  246. assert_equal(0, result[4])
  247. assert_equal(0, result[5])
  248. assert_equal(0, result[6])
  249. assert_equal(0, result[7])
  250. assert_equal(0, result[8])
  251. assert_equal(2, result[9])
  252. assert_equal(1, result[10])
  253. assert_equal(0, result[11])
  254. assert_equal(nil, result[12])
  255. result = Report::TicketFirstSolution.items(
  256. range_start: '2015-01-01T00:00:00Z',
  257. range_end: '2015-12-31T23:59:59Z',
  258. selector: {}, # ticket selector to get only a collection of tickets
  259. )
  260. assert(result)
  261. assert_equal(ticket5.id, result[:ticket_ids][0])
  262. assert_equal(ticket6.id, result[:ticket_ids][1])
  263. assert_equal(ticket7.id, result[:ticket_ids][2])
  264. assert_equal(nil, result[:ticket_ids][3])
  265. # month - with selector #1
  266. result = Report::TicketFirstSolution.aggs(
  267. range_start: '2015-01-01T00:00:00Z',
  268. range_end: '2015-12-31T23:59:59Z',
  269. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  270. selector: {
  271. 'ticket.priority_id' => {
  272. 'operator' => 'is',
  273. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  274. }
  275. }, # ticket selector to get only a collection of tickets
  276. )
  277. assert(result)
  278. assert_equal(0, result[0])
  279. assert_equal(0, result[1])
  280. assert_equal(0, result[2])
  281. assert_equal(0, result[3])
  282. assert_equal(0, result[4])
  283. assert_equal(0, result[5])
  284. assert_equal(0, result[6])
  285. assert_equal(0, result[7])
  286. assert_equal(0, result[8])
  287. assert_equal(1, result[9])
  288. assert_equal(0, result[10])
  289. assert_equal(0, result[11])
  290. assert_equal(nil, result[12])
  291. result = Report::TicketFirstSolution.items(
  292. range_start: '2015-01-01T00:00:00Z',
  293. range_end: '2015-12-31T23:59:59Z',
  294. selector: {
  295. 'ticket.priority_id' => {
  296. 'operator' => 'is',
  297. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  298. }
  299. }, # ticket selector to get only a collection of tickets
  300. )
  301. assert(result)
  302. assert_equal(ticket5.id, result[:ticket_ids][0])
  303. assert_equal(nil, result[:ticket_ids][1])
  304. # month - with selector #2
  305. result = Report::TicketFirstSolution.aggs(
  306. range_start: '2015-01-01T00:00:00Z',
  307. range_end: '2015-12-31T23:59:59Z',
  308. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  309. selector: {
  310. 'ticket.priority_id' => {
  311. 'operator' => 'is not',
  312. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  313. }
  314. }, # ticket selector to get only a collection of tickets
  315. )
  316. assert(result)
  317. assert_equal(0, result[0])
  318. assert_equal(0, result[1])
  319. assert_equal(0, result[2])
  320. assert_equal(0, result[3])
  321. assert_equal(0, result[4])
  322. assert_equal(0, result[5])
  323. assert_equal(0, result[6])
  324. assert_equal(0, result[7])
  325. assert_equal(0, result[8])
  326. assert_equal(1, result[9])
  327. assert_equal(1, result[10])
  328. assert_equal(0, result[11])
  329. assert_equal(nil, result[12])
  330. result = Report::TicketFirstSolution.items(
  331. range_start: '2015-01-01T00:00:00Z',
  332. range_end: '2015-12-31T23:59:59Z',
  333. selector: {
  334. 'ticket.priority_id' => {
  335. 'operator' => 'is not',
  336. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  337. }
  338. }, # ticket selector to get only a collection of tickets
  339. )
  340. assert(result)
  341. assert_equal(ticket6.id, result[:ticket_ids][0])
  342. assert_equal(ticket7.id, result[:ticket_ids][1])
  343. assert_equal(nil, result[:ticket_ids][2])
  344. # week
  345. result = Report::TicketFirstSolution.aggs(
  346. range_start: '2015-10-26T00:00:00Z',
  347. range_end: '2015-10-31T23:59:59Z',
  348. interval: 'week', # year, quarter, month, week, day, hour, minute, second
  349. selector: {}, # ticket selector to get only a collection of tickets
  350. )
  351. assert(result)
  352. assert_equal(0, result[0])
  353. assert_equal(0, result[1])
  354. assert_equal(1, result[2])
  355. assert_equal(0, result[3])
  356. assert_equal(0, result[4])
  357. assert_equal(1, result[5])
  358. assert_equal(1, result[6])
  359. assert_equal(nil, result[7])
  360. result = Report::TicketFirstSolution.items(
  361. range_start: '2015-10-26T00:00:00Z',
  362. range_end: '2015-11-01T23:59:59Z',
  363. interval: 'week', # year, quarter, month, week, day, hour, minute, second
  364. selector: {}, # ticket selector to get only a collection of tickets
  365. )
  366. assert(result)
  367. assert_equal(ticket5.id, result[:ticket_ids][0])
  368. assert_equal(ticket6.id, result[:ticket_ids][1])
  369. assert_equal(ticket7.id, result[:ticket_ids][2])
  370. assert_equal(nil, result[:ticket_ids][3])
  371. # day
  372. result = Report::TicketFirstSolution.aggs(
  373. range_start: '2015-10-01T00:00:00Z',
  374. range_end: '2015-11-01T23:59:59Z',
  375. interval: 'day', # year, quarter, month, week, day, hour, minute, second
  376. selector: {}, # ticket selector to get only a collection of tickets
  377. )
  378. assert(result)
  379. assert_equal(0, result[0])
  380. assert_equal(0, result[1])
  381. assert_equal(0, result[2])
  382. assert_equal(0, result[3])
  383. assert_equal(0, result[4])
  384. assert_equal(0, result[5])
  385. assert_equal(0, result[6])
  386. assert_equal(0, result[7])
  387. assert_equal(0, result[8])
  388. assert_equal(0, result[9])
  389. assert_equal(0, result[10])
  390. assert_equal(0, result[11])
  391. assert_equal(0, result[12])
  392. assert_equal(0, result[13])
  393. assert_equal(0, result[14])
  394. assert_equal(0, result[15])
  395. assert_equal(0, result[16])
  396. assert_equal(0, result[17])
  397. assert_equal(0, result[18])
  398. assert_equal(0, result[19])
  399. assert_equal(0, result[20])
  400. assert_equal(0, result[21])
  401. assert_equal(0, result[22])
  402. assert_equal(0, result[23])
  403. assert_equal(0, result[24])
  404. assert_equal(0, result[25])
  405. assert_equal(0, result[26])
  406. assert_equal(1, result[27])
  407. assert_equal(0, result[28])
  408. assert_equal(0, result[29])
  409. assert_equal(1, result[30])
  410. assert_equal(nil, result[31])
  411. result = Report::TicketFirstSolution.items(
  412. range_start: '2015-10-01T00:00:00Z',
  413. range_end: '2015-10-31T23:59:59Z',
  414. interval: 'day', # year, quarter, month, week, day, hour, minute, second
  415. selector: {}, # ticket selector to get only a collection of tickets
  416. )
  417. assert(result)
  418. assert_equal(ticket5.id, result[:ticket_ids][0])
  419. assert_equal(ticket6.id, result[:ticket_ids][1])
  420. assert_equal(nil, result[:ticket_ids][2])
  421. # hour
  422. result = Report::TicketFirstSolution.aggs(
  423. range_start: '2015-10-28T00:00:00Z',
  424. range_end: '2015-10-28T23:59:59Z',
  425. interval: 'hour', # year, quarter, month, week, day, hour, minute, second
  426. selector: {}, # ticket selector to get only a collection of tickets
  427. )
  428. assert(result)
  429. assert_equal(0, result[0])
  430. assert_equal(0, result[1])
  431. assert_equal(0, result[2])
  432. assert_equal(0, result[3])
  433. assert_equal(0, result[4])
  434. assert_equal(0, result[5])
  435. assert_equal(0, result[6])
  436. assert_equal(0, result[7])
  437. assert_equal(0, result[8])
  438. assert_equal(0, result[9])
  439. assert_equal(0, result[10])
  440. assert_equal(1, result[11])
  441. assert_equal(0, result[12])
  442. assert_equal(0, result[13])
  443. assert_equal(0, result[14])
  444. assert_equal(0, result[15])
  445. assert_equal(0, result[16])
  446. assert_equal(0, result[17])
  447. assert_equal(0, result[18])
  448. assert_equal(0, result[19])
  449. assert_equal(0, result[20])
  450. assert_equal(0, result[21])
  451. assert_equal(0, result[22])
  452. assert_equal(0, result[23])
  453. assert_equal(nil, result[24])
  454. result = Report::TicketFirstSolution.items(
  455. range_start: '2015-10-28T00:00:00Z',
  456. range_end: '2015-10-28T23:59:59Z',
  457. interval: 'hour', # year, quarter, month, week, day, hour, minute, second
  458. selector: {}, # ticket selector to get only a collection of tickets
  459. )
  460. assert(result)
  461. assert_equal(ticket5.id, result[:ticket_ids][0])
  462. assert_equal(nil, result[:ticket_ids][1])
  463. # created by channel and direction
  464. end
  465. test 'b - reopen' do
  466. # month
  467. result = Report::TicketReopened.aggs(
  468. range_start: '2015-01-01T00:00:00Z',
  469. range_end: '2015-12-31T23:59:59Z',
  470. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  471. selector: {}, # ticket selector to get only a collection of tickets
  472. )
  473. assert(result)
  474. assert_equal(0, result[0])
  475. assert_equal(0, result[1])
  476. assert_equal(0, result[2])
  477. assert_equal(0, result[3])
  478. assert_equal(0, result[4])
  479. assert_equal(0, result[5])
  480. assert_equal(0, result[6])
  481. assert_equal(0, result[7])
  482. assert_equal(0, result[8])
  483. assert_equal(1, result[9])
  484. assert_equal(0, result[10])
  485. assert_equal(0, result[11])
  486. assert_equal(nil, result[12])
  487. result = Report::TicketReopened.items(
  488. range_start: '2015-01-01T00:00:00Z',
  489. range_end: '2015-12-31T23:59:59Z',
  490. selector: {}, # ticket selector to get only a collection of tickets
  491. )
  492. assert(result)
  493. assert_equal(ticket5.id, result[:ticket_ids][0])
  494. assert_equal(nil, result[:ticket_ids][1])
  495. # month - with selector #1
  496. result = Report::TicketReopened.aggs(
  497. range_start: '2015-01-01T00:00:00Z',
  498. range_end: '2015-12-31T23:59:59Z',
  499. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  500. selector: {
  501. 'ticket.priority_id' => {
  502. 'operator' => 'is',
  503. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  504. }
  505. }, # ticket selector to get only a collection of tickets
  506. )
  507. assert(result)
  508. assert_equal(0, result[0])
  509. assert_equal(0, result[1])
  510. assert_equal(0, result[2])
  511. assert_equal(0, result[3])
  512. assert_equal(0, result[4])
  513. assert_equal(0, result[5])
  514. assert_equal(0, result[6])
  515. assert_equal(0, result[7])
  516. assert_equal(0, result[8])
  517. assert_equal(1, result[9])
  518. assert_equal(0, result[10])
  519. assert_equal(0, result[11])
  520. assert_equal(nil, result[12])
  521. result = Report::TicketReopened.items(
  522. range_start: '2015-01-01T00:00:00Z',
  523. range_end: '2015-12-31T23:59:59Z',
  524. selector: {
  525. 'ticket.priority_id' => {
  526. 'operator' => 'is',
  527. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  528. }
  529. }, # ticket selector to get only a collection of tickets
  530. )
  531. assert(result)
  532. assert_equal(ticket5.id, result[:ticket_ids][0])
  533. assert_equal(nil, result[:ticket_ids][1])
  534. # month - with selector #2
  535. result = Report::TicketReopened.aggs(
  536. range_start: '2015-01-01T00:00:00Z',
  537. range_end: '2015-12-31T23:59:59Z',
  538. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  539. selector: {
  540. 'ticket.priority_id' => {
  541. 'operator' => 'is not',
  542. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  543. }
  544. }, # ticket selector to get only a collection of tickets
  545. )
  546. assert(result)
  547. assert_equal(0, result[0])
  548. assert_equal(0, result[1])
  549. assert_equal(0, result[2])
  550. assert_equal(0, result[3])
  551. assert_equal(0, result[4])
  552. assert_equal(0, result[5])
  553. assert_equal(0, result[6])
  554. assert_equal(0, result[7])
  555. assert_equal(0, result[8])
  556. assert_equal(0, result[9])
  557. assert_equal(0, result[10])
  558. assert_equal(0, result[11])
  559. assert_equal(nil, result[12])
  560. result = Report::TicketReopened.items(
  561. range_start: '2015-01-01T00:00:00Z',
  562. range_end: '2015-12-31T23:59:59Z',
  563. selector: {
  564. 'ticket.priority_id' => {
  565. 'operator' => 'is not',
  566. 'value' => [Ticket::Priority.lookup(name: '3 high').id],
  567. }
  568. }, # ticket selector to get only a collection of tickets
  569. )
  570. assert(result)
  571. assert_equal(nil, result[:ticket_ids][0])
  572. end
  573. test 'c - move in/out' do
  574. # month
  575. result = Report::TicketMoved.aggs(
  576. range_start: '2015-01-01T00:00:00Z',
  577. range_end: '2015-12-31T23:59:59Z',
  578. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  579. selector: {
  580. 'ticket.group_id' => {
  581. 'operator' => 'is',
  582. 'value' => [Group.lookup(name: 'Users').id],
  583. }
  584. }, # ticket selector to get only a collection of tickets
  585. params: {
  586. type: 'in',
  587. },
  588. )
  589. assert(result)
  590. assert_equal(0, result[0])
  591. assert_equal(0, result[1])
  592. assert_equal(0, result[2])
  593. assert_equal(0, result[3])
  594. assert_equal(0, result[4])
  595. assert_equal(0, result[5])
  596. assert_equal(0, result[6])
  597. assert_equal(0, result[7])
  598. assert_equal(0, result[8])
  599. assert_equal(1, result[9])
  600. assert_equal(0, result[10])
  601. assert_equal(0, result[11])
  602. assert_equal(nil, result[12])
  603. result = Report::TicketMoved.items(
  604. range_start: '2015-01-01T00:00:00Z',
  605. range_end: '2015-12-31T23:59:59Z',
  606. selector: {
  607. 'ticket.group_id' => {
  608. 'operator' => 'is',
  609. 'value' => [Group.lookup(name: 'Users').id],
  610. }
  611. }, # ticket selector to get only a collection of tickets
  612. params: {
  613. type: 'in',
  614. },
  615. )
  616. assert(result)
  617. assert_equal(ticket1.id, result[:ticket_ids][0])
  618. assert_equal(nil, result[:ticket_ids][1])
  619. # out
  620. result = Report::TicketMoved.aggs(
  621. range_start: '2015-01-01T00:00:00Z',
  622. range_end: '2015-12-31T23:59:59Z',
  623. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  624. selector: {
  625. 'ticket.group_id' => {
  626. 'operator' => 'is',
  627. 'value' => [Group.lookup(name: 'Users').id],
  628. }
  629. }, # ticket selector to get only a collection of tickets
  630. params: {
  631. type: 'out',
  632. },
  633. )
  634. assert(result)
  635. assert_equal(0, result[0])
  636. assert_equal(0, result[1])
  637. assert_equal(0, result[2])
  638. assert_equal(0, result[3])
  639. assert_equal(0, result[4])
  640. assert_equal(0, result[5])
  641. assert_equal(0, result[6])
  642. assert_equal(0, result[7])
  643. assert_equal(0, result[8])
  644. assert_equal(1, result[9])
  645. assert_equal(0, result[10])
  646. assert_equal(0, result[11])
  647. assert_equal(nil, result[12])
  648. result = Report::TicketMoved.items(
  649. range_start: '2015-01-01T00:00:00Z',
  650. range_end: '2015-12-31T23:59:59Z',
  651. selector: {
  652. 'ticket.group_id' => {
  653. 'operator' => 'is',
  654. 'value' => [Group.lookup(name: 'Users').id],
  655. }
  656. }, # ticket selector to get only a collection of tickets
  657. params: {
  658. type: 'out',
  659. },
  660. )
  661. assert(result)
  662. assert_equal(ticket2.id, result[:ticket_ids][0])
  663. assert_equal(nil, result[:ticket_ids][1])
  664. end
  665. test 'd - created at' do
  666. # month
  667. result = Report::TicketGenericTime.aggs(
  668. range_start: '2015-01-01T00:00:00Z',
  669. range_end: '2015-12-31T23:59:59Z',
  670. interval: 'month', # year, quarter, month, week, day, hour, minute, second
  671. selector: {}, # ticket selector to get only a collection of tickets
  672. params: { field: 'created_at' },
  673. )
  674. assert(result)
  675. assert_equal(0, result[0])
  676. assert_equal(0, result[1])
  677. assert_equal(0, result[2])
  678. assert_equal(0, result[3])
  679. assert_equal(0, result[4])
  680. assert_equal(0, result[5])
  681. assert_equal(0, result[6])
  682. assert_equal(0, result[7])
  683. assert_equal(0, result[8])
  684. assert_equal(6, result[9])
  685. assert_equal(1, result[10])
  686. assert_equal(0, result[11])
  687. assert_equal(nil, result[12])
  688. result = Report::TicketGenericTime.items(
  689. range_start: '2015-01-01T00:00:00Z',
  690. range_end: '2015-12-31T23:59:59Z',
  691. selector: {}, # ticket selector to get only a collection of tickets
  692. params: { field: 'created_at' },
  693. )
  694. assert(result)
  695. assert_equal(ticket7.id, result[:ticket_ids][0].to_i)
  696. assert_equal(ticket6.id, result[:ticket_ids][1].to_i)
  697. assert_equal(ticket5.id, result[:ticket_ids][2].to_i)
  698. assert_equal(ticket3.id, result[:ticket_ids][3].to_i)
  699. assert_equal(ticket4.id, result[:ticket_ids][4].to_i)
  700. assert_equal(ticket2.id, result[:ticket_ids][5].to_i)
  701. assert_equal(ticket1.id, result[:ticket_ids][6].to_i)
  702. assert_equal(nil, result[:ticket_ids][7])
  703. # cleanup
  704. system('rake searchindex:drop')
  705. end
  706. end