Commit ece38eb1 authored by Peter Leitzen's avatar Peter Leitzen

Merge branch 'bw-convert-board-pagination-specs' into 'master'

Convert boards to use shared pagination specs

See merge request gitlab-org/gitlab!34341
parents f5483493 46b5ec57
...@@ -45,44 +45,37 @@ RSpec.shared_examples 'group and project boards query' do ...@@ -45,44 +45,37 @@ RSpec.shared_examples 'group and project boards query' do
end end
describe 'sorting and pagination' do describe 'sorting and pagination' do
let(:data_path) { [board_parent_type, :boards] }
def pagination_query(params, page_info)
graphql_query_for(
board_parent_type,
{ 'fullPath' => board_parent.full_path },
query_graphql_field('boards', params, "#{page_info} edges { node { id } }")
)
end
def pagination_results_data(data)
data.map { |board| board.dig('node', 'id') }
end
context 'when using default sorting' do context 'when using default sorting' do
let!(:board_B) { create(:board, resource_parent: board_parent, name: 'B') } let!(:board_B) { create(:board, resource_parent: board_parent, name: 'B') }
let!(:board_C) { create(:board, resource_parent: board_parent, name: 'C') } let!(:board_C) { create(:board, resource_parent: board_parent, name: 'C') }
let!(:board_a) { create(:board, resource_parent: board_parent, name: 'a') } let!(:board_a) { create(:board, resource_parent: board_parent, name: 'a') }
let!(:board_A) { create(:board, resource_parent: board_parent, name: 'A') } let!(:board_A) { create(:board, resource_parent: board_parent, name: 'A') }
let(:boards) { [board_a, board_A, board_B, board_C] }
before do
post_graphql(query, current_user: current_user)
end
it_behaves_like 'a working graphql query'
context 'when ascending' do context 'when ascending' do
let(:boards) { [board_a, board_A, board_B, board_C] } it_behaves_like 'sorted paginated query' do
let(:expected_boards) do let(:sort_param) { }
if board_parent.multiple_issue_boards_available? let(:first_param) { 2 }
boards let(:expected_results) do
else if board_parent.multiple_issue_boards_available?
[boards.first] boards.map { |board| board.to_global_id.to_s }
end else
end [boards.first.to_global_id.to_s]
end
it 'sorts boards' do
expect(grab_names).to eq expected_boards.map(&:name)
end
context 'when paginating' do
let(:params) { 'first: 2' }
it 'sorts boards' do
expect(grab_names).to eq expected_boards.first(2).map(&:name)
cursored_query = query("after: \"#{end_cursor}\"")
post_graphql(cursored_query, current_user: current_user)
response_data = Gitlab::Json.parse(response.body)['data'][board_parent_type]['boards']['edges']
expect(grab_names(response_data)).to eq expected_boards.drop(2).first(2).map(&:name)
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment