157 lines
3.8 KiB
Ruby
157 lines
3.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::PaginationDelegate do
|
|
context 'when there is no data' do
|
|
let(:delegate) do
|
|
described_class.new(page: 1,
|
|
per_page: 10,
|
|
count: 0)
|
|
end
|
|
|
|
it 'shows the correct total count' do
|
|
expect(delegate.total_count).to eq(0)
|
|
end
|
|
|
|
it 'shows the correct total pages' do
|
|
expect(delegate.total_pages).to eq(0)
|
|
end
|
|
|
|
it 'shows the correct next page' do
|
|
expect(delegate.next_page).to be_nil
|
|
end
|
|
|
|
it 'shows the correct previous page' do
|
|
expect(delegate.prev_page).to be_nil
|
|
end
|
|
|
|
it 'shows the correct current page' do
|
|
expect(delegate.current_page).to eq(1)
|
|
end
|
|
|
|
it 'shows the correct limit value' do
|
|
expect(delegate.limit_value).to eq(10)
|
|
end
|
|
|
|
it 'shows the correct first page' do
|
|
expect(delegate.first_page?).to be true
|
|
end
|
|
|
|
it 'shows the correct last page' do
|
|
expect(delegate.last_page?).to be true
|
|
end
|
|
|
|
it 'shows the correct offset' do
|
|
expect(delegate.offset).to eq(0)
|
|
end
|
|
end
|
|
|
|
context 'with data' do
|
|
let(:delegate) do
|
|
described_class.new(page: 5,
|
|
per_page: 100,
|
|
count: 1000)
|
|
end
|
|
|
|
it 'shows the correct total count' do
|
|
expect(delegate.total_count).to eq(1000)
|
|
end
|
|
|
|
it 'shows the correct total pages' do
|
|
expect(delegate.total_pages).to eq(10)
|
|
end
|
|
|
|
it 'shows the correct next page' do
|
|
expect(delegate.next_page).to eq(6)
|
|
end
|
|
|
|
it 'shows the correct previous page' do
|
|
expect(delegate.prev_page).to eq(4)
|
|
end
|
|
|
|
it 'shows the correct current page' do
|
|
expect(delegate.current_page).to eq(5)
|
|
end
|
|
|
|
it 'shows the correct limit value' do
|
|
expect(delegate.limit_value).to eq(100)
|
|
end
|
|
|
|
it 'shows the correct first page' do
|
|
expect(delegate.first_page?).to be false
|
|
end
|
|
|
|
it 'shows the correct last page' do
|
|
expect(delegate.last_page?).to be false
|
|
end
|
|
|
|
it 'shows the correct offset' do
|
|
expect(delegate.offset).to eq(400)
|
|
end
|
|
end
|
|
|
|
context 'for last page' do
|
|
let(:delegate) do
|
|
described_class.new(page: 10,
|
|
per_page: 100,
|
|
count: 1000)
|
|
end
|
|
|
|
it 'shows the correct total count' do
|
|
expect(delegate.total_count).to eq(1000)
|
|
end
|
|
|
|
it 'shows the correct total pages' do
|
|
expect(delegate.total_pages).to eq(10)
|
|
end
|
|
|
|
it 'shows the correct next page' do
|
|
expect(delegate.next_page).to be_nil
|
|
end
|
|
|
|
it 'shows the correct previous page' do
|
|
expect(delegate.prev_page).to eq(9)
|
|
end
|
|
|
|
it 'shows the correct current page' do
|
|
expect(delegate.current_page).to eq(10)
|
|
end
|
|
|
|
it 'shows the correct limit value' do
|
|
expect(delegate.limit_value).to eq(100)
|
|
end
|
|
|
|
it 'shows the correct first page' do
|
|
expect(delegate.first_page?).to be false
|
|
end
|
|
|
|
it 'shows the correct last page' do
|
|
expect(delegate.last_page?).to be true
|
|
end
|
|
|
|
it 'shows the correct offset' do
|
|
expect(delegate.offset).to eq(900)
|
|
end
|
|
end
|
|
|
|
context 'with limits and defaults' do
|
|
it 'has a maximum limit per page' do
|
|
expect(described_class.new(page: nil,
|
|
per_page: 1000,
|
|
count: 0).limit_value).to eq(described_class::MAX_PER_PAGE)
|
|
end
|
|
|
|
it 'has a default per page' do
|
|
expect(described_class.new(page: nil,
|
|
per_page: nil,
|
|
count: 0).limit_value).to eq(described_class::DEFAULT_PER_PAGE)
|
|
end
|
|
|
|
it 'has a maximum page' do
|
|
expect(described_class.new(page: 100,
|
|
per_page: 10,
|
|
count: 1).current_page).to eq(1)
|
|
end
|
|
end
|
|
end
|