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
|
@url = url
|
||||||
@page = nil
|
@page = nil
|
||||||
@page_offset = page_offset
|
@page_offset = page_offset
|
||||||
@limit = limit || PAGE_LENGTH
|
@limit = limit
|
||||||
@total = 0
|
@total = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -34,6 +34,8 @@ module BitbucketServer
|
||||||
attr_reader :connection, :page, :url, :type, :limit
|
attr_reader :connection, :page, :url, :type, :limit
|
||||||
|
|
||||||
def over_limit?
|
def over_limit?
|
||||||
|
return false unless @limit
|
||||||
|
|
||||||
@limit.positive? && @total >= @limit
|
@limit.positive? && @total >= @limit
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -42,11 +44,15 @@ module BitbucketServer
|
||||||
end
|
end
|
||||||
|
|
||||||
def starting_offset
|
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
|
end
|
||||||
|
|
||||||
def fetch_next_page
|
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)
|
Page.new(parsed_response, type)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -30,6 +30,17 @@ describe BitbucketServer::Paginator do
|
||||||
expect { limited.items }.to raise_error(StopIteration)
|
expect { limited.items }.to raise_error(StopIteration)
|
||||||
end
|
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
|
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)
|
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