42062a454a
This changes the issue and MR index pages so the pagination system re-uses the output of the COUNT(*) query used to calculate the number of rows per state (opened, closed, etc). This removes the need for an additional COUNT(*) on both pages.
82 lines
2.1 KiB
Ruby
82 lines
2.1 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe IssuableCollections do
|
|
let(:user) { create(:user) }
|
|
|
|
let(:controller) do
|
|
klass = Class.new do
|
|
def self.helper_method(name); end
|
|
|
|
include IssuableCollections
|
|
end
|
|
|
|
controller = klass.new
|
|
|
|
allow(controller).to receive(:params).and_return(state: 'opened')
|
|
|
|
controller
|
|
end
|
|
|
|
describe '#redirect_out_of_range' do
|
|
before do
|
|
allow(controller).to receive(:url_for)
|
|
end
|
|
|
|
it 'returns true and redirects if the offset is out of range' do
|
|
relation = double(:relation, current_page: 10)
|
|
|
|
expect(controller).to receive(:redirect_to)
|
|
expect(controller.send(:redirect_out_of_range, relation, 2)).to eq(true)
|
|
end
|
|
|
|
it 'returns false if the offset is not out of range' do
|
|
relation = double(:relation, current_page: 1)
|
|
|
|
expect(controller).not_to receive(:redirect_to)
|
|
expect(controller.send(:redirect_out_of_range, relation, 2)).to eq(false)
|
|
end
|
|
end
|
|
|
|
describe '#issues_page_count' do
|
|
it 'returns the number of issue pages' do
|
|
project = create(:project, :public)
|
|
|
|
create(:issue, project: project)
|
|
|
|
finder = IssuesFinder.new(user)
|
|
issues = finder.execute
|
|
|
|
allow(controller).to receive(:issues_finder)
|
|
.and_return(finder)
|
|
|
|
expect(controller.send(:issues_page_count, issues)).to eq(1)
|
|
end
|
|
end
|
|
|
|
describe '#merge_requests_page_count' do
|
|
it 'returns the number of merge request pages' do
|
|
project = create(:project, :public)
|
|
|
|
create(:merge_request, source_project: project, target_project: project)
|
|
|
|
finder = MergeRequestsFinder.new(user)
|
|
merge_requests = finder.execute
|
|
|
|
allow(controller).to receive(:merge_requests_finder)
|
|
.and_return(finder)
|
|
|
|
pages = controller.send(:merge_requests_page_count, merge_requests)
|
|
|
|
expect(pages).to eq(1)
|
|
end
|
|
end
|
|
|
|
describe '#page_count_for_relation' do
|
|
it 'returns the number of pages' do
|
|
relation = double(:relation, limit_value: 20)
|
|
pages = controller.send(:page_count_for_relation, relation, 28)
|
|
|
|
expect(pages).to eq(2)
|
|
end
|
|
end
|
|
end
|