overviews_spec.rb 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Ticket::Overviews do
  4. describe '.all' do
  5. let(:views) { described_class.all(current_user: current_user).map(&:name) }
  6. shared_examples 'containing' do |overview|
  7. it "returns #{overview}" do
  8. expect(views).to include(overview)
  9. end
  10. end
  11. shared_examples 'not containing' do |overview|
  12. it "doesn't return #{overview}" do
  13. expect(views).not_to include(overview)
  14. end
  15. end
  16. context 'when Agent' do
  17. let(:current_user) { create(:agent) }
  18. it_behaves_like 'containing', 'Open'
  19. it_behaves_like 'not containing', 'My Tickets'
  20. it_behaves_like 'not containing', 'My Organization Tickets'
  21. end
  22. context 'when Agent is also Customer' do
  23. let(:current_user) { create(:agent_and_customer, :with_org) }
  24. it_behaves_like 'containing', 'Open'
  25. it_behaves_like 'containing', 'My Tickets'
  26. it_behaves_like 'containing', 'My Organization Tickets'
  27. end
  28. context 'when Customer' do
  29. let(:current_user) { create(:customer, :with_org) }
  30. it_behaves_like 'not containing', 'Open'
  31. it_behaves_like 'containing', 'My Tickets'
  32. it_behaves_like 'containing', 'My Organization Tickets'
  33. end
  34. end
  35. describe '.index' do
  36. # https://github.com/zammad/zammad/issues/1769
  37. it 'does not return multiple results for a single ticket' do
  38. user = create(:user)
  39. source_ticket = create(:ticket, customer: user, created_by_id: user.id)
  40. source_ticket2 = create(:ticket, customer: user, created_by_id: user.id)
  41. # create some articles
  42. create(:ticket_article, ticket_id: source_ticket.id, from: 'asdf1@blubselector.de', created_by_id: user.id)
  43. create(:ticket_article, ticket_id: source_ticket.id, from: 'asdf2@blubselector.de', created_by_id: user.id)
  44. create(:ticket_article, ticket_id: source_ticket.id, from: 'asdf3@blubselector.de', created_by_id: user.id)
  45. create(:ticket_article, ticket_id: source_ticket2.id, from: 'asdf3@blubselector.de', created_by_id: user.id)
  46. create(:ticket_article, ticket_id: source_ticket2.id, from: 'asdf4@blubselector.de', created_by_id: user.id)
  47. create(:ticket_article, ticket_id: source_ticket2.id, from: 'asdf5@blubselector.de', created_by_id: user.id)
  48. condition = {
  49. 'article.from' => {
  50. operator: 'contains',
  51. value: 'blubselector.de',
  52. },
  53. }
  54. overview = create(:overview, condition: condition)
  55. result = described_class.index(user)
  56. result = result.select { |x| x[:overview][:name] == overview.name }
  57. expect(result.count).to be == 1
  58. expect(result[0][:count]).to be == 2
  59. expect(result[0][:tickets].count).to be == 2
  60. end
  61. end
  62. describe 'Mentions:' do
  63. let(:group_read) { create(:group) }
  64. let(:user_read) { create(:agent) }
  65. let(:ticket) { create(:ticket, group: group_read) }
  66. before do
  67. user_read.group_names_access_map = {
  68. group_read.name => 'read',
  69. }
  70. end
  71. it 'does show read only tickets in overview because user is mentioned' do
  72. create(:mention, mentionable: ticket, user: user_read)
  73. result = described_class.index(user_read, ['my_subscribed_tickets'])
  74. expect(result.first[:tickets].pluck(:id)).to eq([ticket.id])
  75. end
  76. it 'does not show read only tickets in overview' do
  77. result = described_class.index(user_read, ['my_subscribed_tickets'])
  78. expect(result.first[:tickets]).to eq([])
  79. end
  80. end
  81. end