require 'spec_helper'
require 'split/dashboard/pagination_helpers'
describe Split::DashboardPaginationHelpers do
include Split::DashboardPaginationHelpers
let(:url) { '/split/' }
describe '#pagination_per' do
context 'when params empty' do
let(:params) { Hash[] }
it 'returns 10' do
expect(pagination_per).to eql 10
end
end
context 'when params[:per] is 5' do
let(:params) { Hash[per: 5] }
it 'returns 5' do
expect(pagination_per).to eql 5
end
end
end
describe '#page_number' do
context 'when params empty' do
let(:params) { Hash[] }
it 'returns 1' do
expect(page_number).to eql 1
end
end
context 'when params[:page] is "2"' do
let(:params) { Hash[page: '2'] }
it 'returns 2' do
expect(page_number).to eql 2
end
end
end
describe '#paginated' do
let(:collection) { (1..20).to_a }
let(:params) { Hash[per: '5', page: '3'] }
it { expect(paginated(collection)).to eql [11, 12, 13, 14, 15] }
end
describe '#show_first_page_tag?' do
context 'when page is 1' do
it { expect(show_first_page_tag?).to be false }
end
context 'when page is 3' do
let(:params) { Hash[page: '3'] }
it { expect(show_first_page_tag?).to be true }
end
end
describe '#first_page_tag' do
it { expect(first_page_tag).to eql '1' }
end
describe '#show_first_ellipsis_tag?' do
context 'when page is 1' do
it { expect(show_first_ellipsis_tag?).to be false }
end
context 'when page is 4' do
let(:params) { Hash[page: '4'] }
it { expect(show_first_ellipsis_tag?).to be true }
end
end
describe '#ellipsis_tag' do
it { expect(ellipsis_tag).to eql '...' }
end
describe '#show_prev_page_tag?' do
context 'when page is 1' do
it { expect(show_prev_page_tag?).to be false }
end
context 'when page is 2' do
let(:params) { Hash[page: '2'] }
it { expect(show_prev_page_tag?).to be true }
end
end
describe '#prev_page_tag' do
context 'when page is 2' do
let(:params) { Hash[page: '2'] }
it do
expect(prev_page_tag).to eql '1'
end
end
context 'when page is 3' do
let(:params) { Hash[page: '3'] }
it do
expect(prev_page_tag).to eql '2'
end
end
end
describe '#show_prev_page_tag?' do
context 'when page is 1' do
it { expect(show_prev_page_tag?).to be false }
end
context 'when page is 2' do
let(:params) { Hash[page: '2'] }
it { expect(show_prev_page_tag?).to be true }
end
end
describe '#current_page_tag' do
context 'when page is 1' do
let(:params) { Hash[page: '1'] }
it { expect(current_page_tag).to eql '1' }
end
context 'when page is 2' do
let(:params) { Hash[page: '2'] }
it { expect(current_page_tag).to eql '2' }
end
end
describe '#show_next_page_tag?' do
context 'when page is 2' do
let(:params) { Hash[page: '2'] }
context 'when collection length is 20' do
let(:collection) { (1..20).to_a }
it { expect(show_next_page_tag?(collection)).to be false }
end
context 'when collection length is 25' do
let(:collection) { (1..25).to_a }
it { expect(show_next_page_tag?(collection)).to be true }
end
end
end
describe '#next_page_tag' do
context 'when page is 1' do
let(:params) { Hash[page: '1'] }
it { expect(next_page_tag).to eql '2' }
end
context 'when page is 2' do
let(:params) { Hash[page: '2'] }
it { expect(next_page_tag).to eql '3' }
end
end
describe '#total_pages' do
context 'when collection length is 30' do
let(:collection) { (1..30).to_a }
it { expect(total_pages(collection)).to eql 3 }
end
context 'when collection length is 35' do
let(:collection) { (1..35).to_a }
it { expect(total_pages(collection)).to eql 4 }
end
end
describe '#show_last_ellipsis_tag?' do
let(:collection) { (1..30).to_a }
let(:params) { Hash[per: '5', page: '2'] }
it { expect(show_last_ellipsis_tag?(collection)).to be true }
end
describe '#show_last_page_tag?' do
let(:collection) { (1..30).to_a }
context 'when page is 5/6' do
let(:params) { Hash[per: '5', page: '5'] }
it { expect(show_last_page_tag?(collection)).to be false }
end
context 'when page is 4/6' do
let(:params) { Hash[per: '5', page: '4'] }
it { expect(show_last_page_tag?(collection)).to be true }
end
end
describe '#last_page_tag' do
let(:collection) { (1..30).to_a }
it { expect(last_page_tag(collection)).to eql '3' }
end
end