diff options
Diffstat (limited to 'spec/services/projects/branches_by_mode_service_spec.rb')
-rw-r--r-- | spec/services/projects/branches_by_mode_service_spec.rb | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/spec/services/projects/branches_by_mode_service_spec.rb b/spec/services/projects/branches_by_mode_service_spec.rb index e8bcda8a9c4..9a63563b37b 100644 --- a/spec/services/projects/branches_by_mode_service_spec.rb +++ b/spec/services/projects/branches_by_mode_service_spec.rb @@ -13,20 +13,22 @@ RSpec.describe Projects::BranchesByModeService do describe '#execute' do context 'page is passed' do - let(:params) { { page: 4, mode: 'all', offset: 3 } } + let(:page) { (TestEnv::BRANCH_SHA.length.to_f / Kaminari.config.default_per_page).ceil } + let(:params) { { page: page, mode: 'all', offset: page - 1 } } it 'uses offset pagination' do expect(finder).to receive(:fetch_branches_via_offset_pagination).and_call_original branches, prev_page, next_page = subject + remaining = TestEnv::BRANCH_SHA.length % Kaminari.config.default_per_page - expect(branches.size).to eq(11) + expect(branches.size).to eq(remaining > 0 ? remaining : 20) expect(next_page).to be_nil - expect(prev_page).to eq("/#{project.full_path}/-/branches/all?offset=2&page=3") + expect(prev_page).to eq("/#{project.full_path}/-/branches/all?offset=#{page - 2}&page=#{page - 1}") end context 'but the page does not contain any branches' do - let(:params) { { page: 10, mode: 'all' } } + let(:params) { { page: 100, mode: 'all' } } it 'uses offset pagination' do expect(finder).to receive(:fetch_branches_via_offset_pagination).and_call_original @@ -61,9 +63,10 @@ RSpec.describe Projects::BranchesByModeService do expect(finder).to receive(:fetch_branches_via_offset_pagination).and_call_original branches, prev_page, next_page = subject + expected_page_token = ERB::Util.url_encode(TestEnv::BRANCH_SHA.sort[19][0]) expect(branches.size).to eq(20) - expect(next_page).to eq("/#{project.full_path}/-/branches/all?offset=1&page_token=conflict-resolvable") + expect(next_page).to eq("/#{project.full_path}/-/branches/all?offset=1&page_token=#{expected_page_token}") expect(prev_page).to be_nil end end @@ -75,26 +78,31 @@ RSpec.describe Projects::BranchesByModeService do it 'returns branches for the first page' do branches, prev_page, next_page = subject + expected_page_token = ERB::Util.url_encode(TestEnv::BRANCH_SHA.sort[19][0]) expect(branches.size).to eq(20) - expect(next_page).to eq("/#{project.full_path}/-/branches/all?offset=1&page_token=conflict-resolvable") + expect(next_page).to eq("/#{project.full_path}/-/branches/all?offset=1&page_token=#{expected_page_token}") expect(prev_page).to be_nil end context 'when second page is requested' do - let(:params) { { page_token: 'conflict-resolvable', mode: 'all', sort: 'name_asc', offset: 1 } } + let(:page_token) { 'conflict-resolvable' } + let(:params) { { page_token: page_token, mode: 'all', sort: 'name_asc', offset: 1 } } it 'returns branches for the first page' do branches, prev_page, next_page = subject + branch_index = TestEnv::BRANCH_SHA.sort.find_index { |a| a[0] == page_token } + expected_page_token = ERB::Util.url_encode(TestEnv::BRANCH_SHA.sort[20 + branch_index][0]) expect(branches.size).to eq(20) - expect(next_page).to eq("/#{project.full_path}/-/branches/all?offset=2&page_token=improve%2Fawesome&sort=name_asc") + expect(next_page).to eq("/#{project.full_path}/-/branches/all?offset=2&page_token=#{expected_page_token}&sort=name_asc") expect(prev_page).to eq("/#{project.full_path}/-/branches/all?offset=0&page=1&sort=name_asc") end end context 'when last page is requested' do - let(:params) { { page_token: 'signed-commits', mode: 'all', sort: 'name_asc', offset: 4 } } + let(:page_token) { TestEnv::BRANCH_SHA.sort[-16][0] } + let(:params) { { page_token: page_token, mode: 'all', sort: 'name_asc', offset: 4 } } it 'returns branches after the specified branch' do branches, prev_page, next_page = subject |