2011-12-10 11:15:18 -05:00
|
|
|
require 'spec_helper'
|
2011-02-05 09:20:06 -05:00
|
|
|
include Kaminari::Helpers
|
|
|
|
|
2011-02-27 09:25:16 -05:00
|
|
|
describe 'Kaminari::Helpers::Paginator' do
|
2011-02-13 04:25:07 -05:00
|
|
|
let :template do
|
2011-02-05 09:20:06 -05:00
|
|
|
stub(r = Object.new) do
|
|
|
|
render.with_any_args
|
|
|
|
params { {} }
|
2011-02-27 09:25:16 -05:00
|
|
|
options { {} }
|
2011-02-05 09:20:06 -05:00
|
|
|
url_for {|h| "/foo?page=#{h[:page]}"}
|
2014-03-15 18:18:54 -04:00
|
|
|
link_to { "<a href='#'>link</a>" }
|
2011-02-05 09:20:06 -05:00
|
|
|
end
|
|
|
|
r
|
|
|
|
end
|
2014-03-15 18:18:54 -04:00
|
|
|
|
|
|
|
describe "view helper methods delegated to template" do
|
|
|
|
before do
|
|
|
|
@paginator = Paginator.new(template, :params => {})
|
|
|
|
end
|
|
|
|
subject { @paginator.link_to("link", "#") }
|
|
|
|
it { should == "<a href='#'>link</a>" }
|
|
|
|
end
|
2011-02-13 04:25:07 -05:00
|
|
|
|
|
|
|
describe '#params' do
|
2011-02-16 08:52:55 -05:00
|
|
|
before do
|
2011-02-27 09:25:16 -05:00
|
|
|
@paginator = Paginator.new(template, :params => {:controller => 'foo', :action => 'bar'})
|
2011-02-16 08:52:55 -05:00
|
|
|
end
|
2011-02-27 09:25:16 -05:00
|
|
|
subject { @paginator.page_tag(template).instance_variable_get('@params') }
|
|
|
|
it { should == {:controller => 'foo', :action => 'bar'} }
|
2014-03-12 23:23:13 -04:00
|
|
|
|
|
|
|
context "when params has form params" do
|
|
|
|
before do
|
|
|
|
stub(template).params do
|
|
|
|
{
|
|
|
|
:authenticity_token => "token",
|
|
|
|
:commit => "submit",
|
2014-03-13 00:08:57 -04:00
|
|
|
:utf8 => "true",
|
2014-03-12 23:23:13 -04:00
|
|
|
:_method => "patch"
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it { should == {:controller => 'foo', :action => 'bar'} }
|
|
|
|
end
|
2011-02-27 09:25:16 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
describe '#param_name' do
|
|
|
|
before do
|
|
|
|
@paginator = Paginator.new(template, :param_name => :pagina)
|
|
|
|
end
|
|
|
|
subject { @paginator.page_tag(template).instance_variable_get('@param_name') }
|
|
|
|
it { should == :pagina }
|
2011-02-13 04:25:07 -05:00
|
|
|
end
|
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
#TODO test somehow...
|
|
|
|
# describe '#tagify_links' do
|
|
|
|
# def tags_with(options)
|
|
|
|
# PaginationRenderer.new(template, options).tagify_links
|
|
|
|
# end
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context '1 page in total' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 1, :current_page => 1 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# it { should have(0).tags }
|
|
|
|
# end
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context '10 pages in total' do
|
|
|
|
# context 'first page' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 1 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context 'second page' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 2 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context 'third page' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 3 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context 'fourth page(no truncation)' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 4 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context 'seventh page(no truncation)' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 7 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-08 11:40:09 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context 'eighth page' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 8 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-05 09:20:06 -05:00
|
|
|
|
2011-02-16 08:52:55 -05:00
|
|
|
# context 'last page' do
|
2012-05-25 02:31:53 -04:00
|
|
|
# subject { tags_with :total_pages => 10, :current_page => 10 }
|
2011-02-16 08:52:55 -05:00
|
|
|
# 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
|
2011-02-05 09:20:06 -05:00
|
|
|
end
|