pagination_examples.rb 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. RSpec.shared_examples 'pagination' do |model:, klass:, path:, sort_by: :name|
  2. def prepare(model)
  3. create_list(model, 500)
  4. end
  5. it 'does paginate' do
  6. prepare(model)
  7. visit path
  8. refresh # more stability
  9. expect(page).to have_css('.js-pager', wait: 10)
  10. class_page1 = klass.order(sort_by => :asc, id: :asc).offset(50).first
  11. expect(page).to have_text(class_page1.name, wait: 10)
  12. page.first('.js-page', text: '2').click
  13. await_empty_ajax_queue
  14. class_page2 = klass.order(sort_by => :asc, id: :asc).offset(175).first
  15. expect(page).to have_text(class_page2.name, wait: 10)
  16. page.first('.js-page', text: '3').click
  17. await_empty_ajax_queue
  18. class_page3 = klass.order(sort_by => :asc, id: :asc).offset(325).first
  19. expect(page).to have_text(class_page3.name, wait: 10)
  20. page.first('.js-page', text: '4').click
  21. await_empty_ajax_queue
  22. class_page4 = klass.order(sort_by => :asc, id: :asc).offset(475).first
  23. expect(page).to have_text(class_page4.name, wait: 10)
  24. page.first('.js-page', text: '1').click
  25. await_empty_ajax_queue
  26. page.first('.js-tableHead[data-column-key=name]').click
  27. await_empty_ajax_queue
  28. expect(page).to have_text(class_page1.name, wait: 10)
  29. page.first('.js-tableHead[data-column-key=name]').click
  30. await_empty_ajax_queue
  31. class_last = klass.order(sort_by => :desc).first
  32. expect(page).to have_text(class_last.name, wait: 10)
  33. end
  34. end