ticket_articles_spec.rb 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe 'Mobile > Ticket > Articles', app: :mobile, authenticated_as: :agent, type: :system do
  4. let(:group) { create(:group) }
  5. let(:agent) { create(:agent, groups: [group]) }
  6. context 'when opening ticket with a single article' do
  7. let(:ticket) { create(:ticket, title: 'Ticket Title', group: group) }
  8. let!(:article) { create(:ticket_article, body: 'Article 1', ticket: ticket, internal: false) }
  9. it 'see a single article and no "load more"' do
  10. visit "/tickets/#{ticket.id}"
  11. expect(page).to have_text(article.body)
  12. expect(page).to have_no_text('load')
  13. end
  14. end
  15. context 'when opening ticket with 6 articles page' do
  16. let(:ticket) { create(:ticket, title: 'Ticket Title', group: group) }
  17. let!(:articles) do
  18. (1..6).map do |number|
  19. create(:ticket_article, body: "Article #{number}", ticket: ticket)
  20. end
  21. end
  22. it 'see all 6 articles' do
  23. visit "/tickets/#{ticket.id}"
  24. articles.each do |article|
  25. expect(page).to have_text(article.body, count: 1)
  26. end
  27. expect(page).to have_no_text('load')
  28. end
  29. end
  30. context 'when opening ticket with a lot of articles' do
  31. let(:ticket) { create(:ticket, title: 'Ticket Title', group: group) }
  32. let!(:articles) do
  33. (1..10).map do |number|
  34. create(:ticket_article, body: "Article #{number}.", ticket: ticket)
  35. end
  36. end
  37. it 'can use "load more" button' do
  38. visit "/tickets/#{ticket.id}"
  39. expect(page).to have_text('Article 1.')
  40. (5..9).each do |number|
  41. expect(page).to have_text(articles[number].body, count: 1)
  42. end
  43. expect(page).to have_no_text('Article 5.')
  44. click('button', text: 'load 4 more')
  45. wait_for_gql('apps/mobile/pages/ticket/graphql/queries/ticket/articles.graphql')
  46. (1..4).each do |number|
  47. expect(page).to have_text(articles[number].body, count: 1)
  48. end
  49. expect(page).to have_no_text('load')
  50. end
  51. end
  52. end