require File.expand_path('../spec_helper', File.dirname(__FILE__)) include Kaminari::Helpers describe 'Kaminari::Helpers::PaginationRenderer' do let :template do stub(r = Object.new) do render.with_any_args params { {} } url_for {|h| "/foo?page=#{h[:page]}"} end r end describe '#params' do subject { PaginationRenderer.new(template, :params => {:controller => 'foo', :action => 'bar'}) } its(:params) { should == {:controller => 'foo', :action => 'bar'} } end describe '#tagify_links' do def tags_with(options) PaginationRenderer.new(template, options).tagify_links end context '1 page in total' do subject { tags_with :num_pages => 1, :current_page => 1 } it { should have(0).tags } end context '10 pages in total' do context 'first page' do subject { tags_with :num_pages => 10, :current_page => 1 } it { should_not contain_tag PrevLink } it { should contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should_not contain_tag FirstPageLink } it { should contain_tag LastPageLink } it { should contain_tag PageLink } it { should contain_tag NextLink } it { should_not contain_tag NextSpan } it { should contain_tag TruncatedSpan } end context 'second page' do subject { tags_with :num_pages => 10, :current_page => 2 } it { should contain_tag PrevLink } it { should_not contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should contain_tag FirstPageLink } it { should contain_tag LastPageLink } it { should contain_tag PageLink } it { should contain_tag NextLink } it { should_not contain_tag NextSpan } it { should contain_tag TruncatedSpan } end context 'third page' do subject { tags_with :num_pages => 10, :current_page => 3 } it { should contain_tag PrevLink } it { should_not contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should contain_tag FirstPageLink } it { should contain_tag LastPageLink } it { should contain_tag PageLink } it { should contain_tag NextLink } it { should_not contain_tag NextSpan } it { should contain_tag TruncatedSpan } end context 'fourth page(no truncation)' do subject { tags_with :num_pages => 10, :current_page => 4 } it { should contain_tag PrevLink } it { should_not contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should contain_tag FirstPageLink } it { should contain_tag LastPageLink } it { should contain_tag PageLink } it { should contain_tag NextLink } it { should_not contain_tag NextSpan } it { should_not contain_tag TruncatedSpan } end context 'seventh page(no truncation)' do subject { tags_with :num_pages => 10, :current_page => 7 } it { should contain_tag PrevLink } it { should_not contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should contain_tag FirstPageLink } it { should contain_tag LastPageLink } it { should contain_tag PageLink } it { should contain_tag NextLink } it { should_not contain_tag NextSpan } it { should_not contain_tag TruncatedSpan } end context 'eighth page' do subject { tags_with :num_pages => 10, :current_page => 8 } it { should contain_tag PrevLink } it { should_not contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should contain_tag FirstPageLink } it { should contain_tag LastPageLink } it { should contain_tag PageLink } it { should contain_tag NextLink } it { should_not contain_tag NextSpan } it { should contain_tag TruncatedSpan } end context 'last page' do subject { tags_with :num_pages => 10, :current_page => 10 } it { should contain_tag PrevLink } it { should_not contain_tag PrevSpan } it { should contain_tag CurrentPage } it { should contain_tag FirstPageLink } it { should_not contain_tag LastPageLink } it { should contain_tag PageLink } it { should_not contain_tag NextLink } it { should contain_tag NextSpan } it { should contain_tag TruncatedSpan } end end end end