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:
Rémy Coutable 2019-01-07 11:54:35 +00:00
commit 4af1c77b29
3 changed files with 25 additions and 3 deletions

View file

@ -0,0 +1,5 @@
---
title: Fix Bitbucket Server import only including first 25 pull requests
merge_request: 24178
author:
type: fixed

View file

@ -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

View file

@ -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)