has_ticket_create_screen_impact_spec.rb 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. require 'rails_helper'
  2. RSpec.describe HasTicketCreateScreenImpact, type: :job do
  3. context 'with groups' do
  4. let!(:group) { create(:group) }
  5. it 'create should enqueue no job' do
  6. collection_jobs = enqueued_jobs.select do |job|
  7. job[:job] == TicketCreateScreenJob
  8. end
  9. expect(collection_jobs.count).to be(1)
  10. end
  11. context 'updating attribute' do
  12. before do
  13. clear_jobs
  14. end
  15. context 'name' do
  16. it 'enqueues a job' do
  17. expect { group.update!(name: 'new name') }.to have_enqueued_job(TicketCreateScreenJob)
  18. end
  19. end
  20. context 'active' do
  21. it 'enqueues a job' do
  22. expect { group.update!(active: false) }.to have_enqueued_job(TicketCreateScreenJob)
  23. end
  24. end
  25. context 'updated_at' do
  26. it 'enqueues a job' do
  27. expect { group.touch }.to have_enqueued_job(TicketCreateScreenJob)
  28. end
  29. end
  30. end
  31. it 'delete should enqueue no job' do
  32. clear_jobs
  33. expect { group.destroy! }.to have_enqueued_job(TicketCreateScreenJob)
  34. end
  35. end
  36. context 'with roles' do
  37. let!(:role) { create(:role) }
  38. it 'create should enqueue no job' do
  39. collection_jobs = enqueued_jobs.select do |job|
  40. job[:job] == TicketCreateScreenJob
  41. end
  42. expect(collection_jobs.count).to be(1)
  43. end
  44. context 'updating attribute' do
  45. before do
  46. clear_jobs
  47. end
  48. context 'name' do
  49. it 'enqueues a job' do
  50. expect { role.update!(name: 'new name') }.to have_enqueued_job(TicketCreateScreenJob)
  51. end
  52. end
  53. context 'active' do
  54. it 'enqueues a job' do
  55. expect { role.update!(active: false) }.to have_enqueued_job(TicketCreateScreenJob)
  56. end
  57. end
  58. context 'updated_at' do
  59. it 'enqueues no job' do
  60. expect { role.touch }.to have_enqueued_job(TicketCreateScreenJob)
  61. end
  62. end
  63. end
  64. it 'delete should enqueue no job' do
  65. clear_jobs
  66. expect { role.destroy! }.to have_enqueued_job(TicketCreateScreenJob)
  67. end
  68. end
  69. context 'with users' do
  70. let!(:customer) { create(:user, roles: Role.where(name: 'Customer')) }
  71. let!(:agent) { create(:user, roles: Role.where(name: 'Agent')) }
  72. let!(:admin) { create(:user, roles: Role.where(name: 'Admin')) }
  73. let(:customer_new) { create(:user, roles: Role.where(name: 'Customer')) }
  74. let(:agent_new) { create(:user, roles: Role.where(name: 'Agent')) }
  75. let(:admin_new) { create(:user, roles: Role.where(name: 'Admin')) }
  76. context 'creating' do
  77. before do
  78. clear_jobs
  79. end
  80. it 'customer should enqueue no job' do
  81. customer_new
  82. collection_jobs = enqueued_jobs.select do |job|
  83. job[:job] == TicketCreateScreenJob
  84. end
  85. expect(collection_jobs.count).to be(0)
  86. end
  87. it 'agent should enqueue a job' do
  88. agent_new
  89. collection_jobs = enqueued_jobs.select do |job|
  90. job[:job] == TicketCreateScreenJob
  91. end
  92. expect(collection_jobs.count).to be(1)
  93. end
  94. it 'admin should enqueue no job' do
  95. admin_new
  96. collection_jobs = enqueued_jobs.select do |job|
  97. job[:job] == TicketCreateScreenJob
  98. end
  99. expect(collection_jobs.count).to be(0)
  100. end
  101. end
  102. context 'updating attribute' do
  103. before do
  104. clear_jobs
  105. end
  106. context 'firstname field for' do
  107. it 'customer should enqueue no job' do
  108. expect { customer.update!(firstname: 'new firstname') }.not_to have_enqueued_job(TicketCreateScreenJob)
  109. end
  110. it 'agent should enqueue a job' do
  111. expect { agent.update!(firstname: 'new firstname') }.to have_enqueued_job(TicketCreateScreenJob)
  112. end
  113. it 'admin should enqueue no job' do
  114. expect { admin.update!(firstname: 'new firstname') }.not_to have_enqueued_job(TicketCreateScreenJob)
  115. end
  116. end
  117. context 'active field for' do
  118. it 'customer should enqueue no job' do
  119. expect { customer.update!(active: false) }.not_to have_enqueued_job(TicketCreateScreenJob)
  120. end
  121. it 'agent should enqueue a job' do
  122. expect { agent.update!(active: false) }.to have_enqueued_job(TicketCreateScreenJob)
  123. end
  124. it 'admin should enqueue no job' do
  125. admin_new # Prevend "Minimum one user needs to have admin permissions."
  126. clear_jobs
  127. expect { admin.update!(active: false) }.not_to have_enqueued_job(TicketCreateScreenJob)
  128. end
  129. end
  130. end
  131. context 'deleting' do
  132. before do
  133. clear_jobs
  134. end
  135. it 'customer should enqueue a job' do
  136. expect { customer.destroy! }.to have_enqueued_job(TicketCreateScreenJob)
  137. end
  138. it 'agent should enqueue a job' do
  139. expect { agent.destroy! }.to have_enqueued_job(TicketCreateScreenJob)
  140. end
  141. it 'admin should enqueue a job' do
  142. expect { admin.destroy! }.to have_enqueued_job(TicketCreateScreenJob)
  143. end
  144. end
  145. end
  146. end