Merge branch 'sh-fix-issue-55914' into 'master'
Fix Bitbucket Server import only including first 25 pull requests Closes #55914 See merge request gitlab-org/gitlab-ce!24178
This commit is contained in:
commit
4af1c77b29
3 changed files with 25 additions and 3 deletions
5
changelogs/unreleased/sh-fix-issue-55914.yml
Normal file
5
changelogs/unreleased/sh-fix-issue-55914.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix Bitbucket Server import only including first 25 pull requests
|
||||
merge_request: 24178
|
||||
author:
|
||||
type: fixed
|
|
@ -12,7 +12,7 @@ module BitbucketServer
|
|||
@url = url
|
||||
@page = nil
|
||||
@page_offset = page_offset
|
||||
@limit = limit || PAGE_LENGTH
|
||||
@limit = limit
|
||||
@total = 0
|
||||
end
|
||||
|
||||
|
@ -34,6 +34,8 @@ module BitbucketServer
|
|||
attr_reader :connection, :page, :url, :type, :limit
|
||||
|
||||
def over_limit?
|
||||
return false unless @limit
|
||||
|
||||
@limit.positive? && @total >= @limit
|
||||
end
|
||||
|
||||
|
@ -42,11 +44,15 @@ module BitbucketServer
|
|||
end
|
||||
|
||||
def starting_offset
|
||||
[0, page_offset - 1].max * limit
|
||||
[0, page_offset - 1].max * max_per_page
|
||||
end
|
||||
|
||||
def max_per_page
|
||||
limit || PAGE_LENGTH
|
||||
end
|
||||
|
||||
def fetch_next_page
|
||||
parsed_response = connection.get(@url, start: next_offset, limit: @limit)
|
||||
parsed_response = connection.get(@url, start: next_offset, limit: max_per_page)
|
||||
Page.new(parsed_response, type)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -30,6 +30,17 @@ describe BitbucketServer::Paginator do
|
|||
expect { limited.items }.to raise_error(StopIteration)
|
||||
end
|
||||
|
||||
it 'does not stop if limit is unspecified' do
|
||||
stub_const("BitbucketServer::Paginator::PAGE_LENGTH", 1)
|
||||
paginator = described_class.new(connection, 'http://more-data', :pull_request, page_offset: 0, limit: nil)
|
||||
allow(paginator).to receive(:fetch_next_page).and_return(first_page, last_page)
|
||||
|
||||
expect(paginator.has_next_page?).to be_truthy
|
||||
expect(paginator.items).to match(['item_1'])
|
||||
expect(paginator.has_next_page?).to be_truthy
|
||||
expect(paginator.items).to match(['item_2'])
|
||||
end
|
||||
|
||||
it 'calls the connection with different offsets' do
|
||||
expect(connection).to receive(:get).with('http://more-data', start: 0, limit: BitbucketServer::Paginator::PAGE_LENGTH).and_return(page_attrs)
|
||||
|
||||
|
|
Loading…
Reference in a new issue