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