ticket_article_time_accouting_test.rb 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class TicketArticleTimeAccoutingTest < ActiveSupport::TestCase
  4. test 'destroy dependent time accounting for ticket and article' do
  5. ticket_test = Ticket.create(
  6. title: 'com test 1',
  7. group: Group.lookup(name: 'Users'),
  8. customer_id: 2,
  9. state: Ticket::State.lookup(name: 'new'),
  10. priority: Ticket::Priority.lookup(name: '2 normal'),
  11. updated_by_id: 1,
  12. created_by_id: 1,
  13. )
  14. assert(ticket_test, 'ticket created')
  15. article_test1 = Ticket::Article.create(
  16. ticket_id: ticket_test.id,
  17. from: 'some_customer_com-1@example.com',
  18. to: 'some_zammad_com-1@example.com',
  19. subject: 'com test 1',
  20. message_id: 'some@id_com_1',
  21. body: 'some message 123',
  22. internal: false,
  23. sender: Ticket::Article::Sender.find_by(name: 'Customer'),
  24. type: Ticket::Article::Type.find_by(name: 'email'),
  25. updated_by_id: 1,
  26. created_by_id: 1,
  27. )
  28. Ticket::TimeAccounting.create!(
  29. ticket_id: ticket_test.id,
  30. ticket_article_id: article_test1.id,
  31. time_unit: 10,
  32. created_by_id: 1,
  33. )
  34. article_test2 = Ticket::Article.create(
  35. ticket_id: ticket_test.id,
  36. from: 'some_customer_com-1@example.com',
  37. to: 'some_zammad_com-1@example.com',
  38. subject: 'com test 1',
  39. message_id: 'some@id_com_1',
  40. body: 'some message 123',
  41. internal: false,
  42. sender: Ticket::Article::Sender.find_by(name: 'Customer'),
  43. type: Ticket::Article::Type.find_by(name: 'email'),
  44. updated_by_id: 1,
  45. created_by_id: 1,
  46. )
  47. Ticket::TimeAccounting.create!(
  48. ticket_id: ticket_test.id,
  49. ticket_article_id: article_test2.id,
  50. time_unit: 10,
  51. created_by_id: 1,
  52. )
  53. article_test3 = Ticket::Article.create(
  54. ticket_id: ticket_test.id,
  55. from: 'some_customer_com-1@example.com',
  56. to: 'some_zammad_com-1@example.com',
  57. subject: 'com test 1',
  58. message_id: 'some@id_com_1',
  59. body: 'some message 123',
  60. internal: false,
  61. sender: Ticket::Article::Sender.find_by(name: 'Customer'),
  62. type: Ticket::Article::Type.find_by(name: 'email'),
  63. updated_by_id: 1,
  64. created_by_id: 1,
  65. )
  66. Ticket::TimeAccounting.create!(
  67. ticket_id: ticket_test.id,
  68. ticket_article_id: article_test3.id,
  69. time_unit: 10,
  70. created_by_id: 1,
  71. )
  72. Ticket::TimeAccounting.create!(
  73. ticket_id: ticket_test.id,
  74. time_unit: 10,
  75. created_by_id: 1,
  76. )
  77. time_accouting_list = Ticket::TimeAccounting.where(
  78. ticket_id: ticket_test.id,
  79. )
  80. found = time_accouting_list.select { |t| t.ticket_article_id.in?([article_test1.id, article_test2.id, article_test3.id]) }
  81. assert_equal(3, found.count)
  82. article_test1.destroy
  83. time_accouting_list.reload
  84. found = time_accouting_list.select { |t| t.ticket_article_id.in?([article_test1.id, article_test2.id, article_test3.id]) }
  85. assert_equal(2, found.count)
  86. article_test2.destroy
  87. time_accouting_list.reload
  88. found = time_accouting_list.select { |t| t.ticket_article_id.in?([article_test1.id, article_test2.id, article_test3.id]) }
  89. assert_equal(1, found.count)
  90. article_test3.destroy
  91. time_accouting_list.reload
  92. found = time_accouting_list.select { |t| t.ticket_article_id.in?([article_test1.id, article_test2.id, article_test3.id]) }
  93. assert_equal(0, found.count)
  94. # one accouting left for the ticket only
  95. assert_equal(1, time_accouting_list.count)
  96. ticket_test.destroy
  97. time_accouting_list.reload
  98. assert_equal(0, time_accouting_list.count)
  99. end
  100. end