# frozen_string_literal: true
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 the default (10)" do
default_per_page = Split.configuration.dashboard_pagination_default_per_page
expect(pagination_per).to eql default_per_page
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