ticket_list_spec.rb 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe 'Mobile > Tickets', app: :mobile, authenticated_as: :agent, type: :system do
  4. let(:organization) { create(:organization) }
  5. let(:user) { create(:user, organization: organization) }
  6. let(:group) { create(:group) }
  7. let(:agent) { create(:agent) }
  8. let(:open_tickets) { create_list(:ticket, 20, customer: user, organization: organization, group: group, created_by_id: user.id, state: Ticket::State.lookup(name: 'open')) }
  9. let(:overview_tickets) { ::Ticket::Overviews.tickets_for_overview(Overview.find_by(link: 'all_open'), agent).limit(nil) }
  10. before do
  11. Overview.find_by(link: 'all_open').update!(
  12. view: {
  13. s: %w[number title customer group state owner created_at],
  14. view_mode_default: 's',
  15. },
  16. )
  17. open_tickets
  18. overview_tickets
  19. agent.group_names_access_map = Group.all.to_h { |g| [g.name, ['full']] }
  20. end
  21. context 'when on "Open Tickets" view' do
  22. before do
  23. visit '/tickets/view/all_open'
  24. end
  25. context 'when checking displayed tickets' do
  26. it 'displays 10 tickets by default' do
  27. expect(page).to have_link(href: %r{/mobile/tickets/}, count: 10)
  28. end
  29. it 'loads more tickets when scrolling down' do
  30. wait.until do
  31. expect(page).to have_link(href: %r{/mobile/tickets/}, count: 10)
  32. end
  33. page.scroll_to :bottom
  34. wait.until do
  35. expect(page).to have_link(href: %r{/mobile/tickets/}, count: 20)
  36. end
  37. end
  38. end
  39. context 'when changing sort by and order by' do
  40. it 'opens the dialog and reorders the list' do
  41. find('[data-test-id="column"]').click
  42. expect(page.find('[role="dialog"]')).to have_text('Number')
  43. expect(page.find('[role="dialog"]')).to have_text('descending')
  44. find('span', text: 'Number').click
  45. find('label', text: 'descending').click
  46. send_keys(:escape)
  47. wait.until do
  48. expect(page).to have_no_css('[role="dialog"]')
  49. end
  50. expect(find('a[href^="/mobile/tickets/"]:first-of-type')).to have_text(open_tickets.last.number)
  51. end
  52. end
  53. context 'when changing the selected ticket overview' do
  54. before do
  55. visit '/'
  56. end
  57. it 'could change the overview' do
  58. find_link('Open Tickets', href: '/mobile/tickets/view/all_open').click
  59. wait.until do
  60. expect(page).to have_text("Open Tickets\n(21)")
  61. end
  62. find('button', text: "Open Tickets\n(21)").click
  63. expect(page.find('[role="dialog"]')).to have_text('Escalated Tickets')
  64. find('span', text: 'Escalated Tickets').click
  65. wait.until do
  66. expect(page).to have_no_css('[role="dialog"]')
  67. expect(page).to have_text("Escalated Tickets\n(0)")
  68. end
  69. end
  70. end
  71. end
  72. end