mirror of
https://github.com/kaminari/kaminari.git
synced 2022-11-09 13:44:37 -05:00
run sinatra_helpers_spec only if Sinatra is loaded
This commit is contained in:
parent
3d9ecb4dd1
commit
9ff3c316b0
1 changed files with 132 additions and 131 deletions
|
@ -1,168 +1,169 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
require 'spec_helper_for_sinatra'
|
|
||||||
|
|
||||||
ERB_TEMPLATE_FOR_PAGINATE = <<EOT
|
if defined? Sinatra
|
||||||
<div>
|
ERB_TEMPLATE_FOR_PAGINATE = <<EOT
|
||||||
<ul>
|
<div>
|
||||||
<% @users.each do |user| %>
|
<ul>
|
||||||
<li class="user_info"><%= user.id %></li>
|
<% @users.each do |user| %>
|
||||||
<% end %>
|
<li class="user_info"><%= user.id %></li>
|
||||||
</ul>
|
<% end %>
|
||||||
<%= paginate @users, @options %>
|
</ul>
|
||||||
</div>
|
<%= paginate @users, @options %>
|
||||||
|
</div>
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
ERB_TEMPLATE_FOR_NEXT_PAGE = <<EOT
|
ERB_TEMPLATE_FOR_NEXT_PAGE = <<EOT
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<% @users.each do |user| %>
|
<% @users.each do |user| %>
|
||||||
<li class="user_info"><%= user.id %></li>
|
<li class="user_info"><%= user.id %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<%= link_to_next_page(@users, "Next!", {:id => 'next_page_link'}.merge(@options || {})) %>
|
<%= link_to_next_page(@users, "Next!", {:id => 'next_page_link'}.merge(@options || {})) %>
|
||||||
</div>
|
</div>
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
describe 'Kaminari::Helpers::SinatraHelper' do
|
describe 'Kaminari::Helpers::SinatraHelper' do
|
||||||
before do
|
|
||||||
50.times {|i| User.create! :name => "user#{i}"}
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '#paginate' do
|
|
||||||
before do
|
before do
|
||||||
mock_app do
|
50.times {|i| User.create! :name => "user#{i}"}
|
||||||
register Kaminari::Helpers::SinatraHelpers
|
|
||||||
get '/users' do
|
|
||||||
@page = params[:page] || 1
|
|
||||||
@users = User.page(@page)
|
|
||||||
@options = {}
|
|
||||||
erb ERB_TEMPLATE_FOR_PAGINATE
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'normal paginations with Sinatra' do
|
describe '#paginate' do
|
||||||
before { get '/users' }
|
before do
|
||||||
|
|
||||||
it 'should have a navigation tag' do
|
|
||||||
last_document.search('nav.pagination').should_not be_empty
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should have pagination links' do
|
|
||||||
last_document.search('.page a').should have_at_least(1).items
|
|
||||||
last_document.search('.next a').should have_at_least(1).items
|
|
||||||
last_document.search('.last a').should have_at_least(1).items
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should point to current page' do
|
|
||||||
last_document.search('.current').text.should match(/1/)
|
|
||||||
|
|
||||||
get '/users?page=2'
|
|
||||||
last_document.search('.current').text.should match(/2/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should load 25 users' do
|
|
||||||
last_document.search('li.user_info').should have(25).items
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should preserve params' do
|
|
||||||
get '/users?foo=bar'
|
|
||||||
last_document.search('.page a').should(be_all do |elm|
|
|
||||||
elm.attribute('href').value =~ /foo=bar/
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'optional paginations with Sinatra' do
|
|
||||||
it 'should have 5 windows with 1 gap' do
|
|
||||||
mock_app do
|
mock_app do
|
||||||
register Kaminari::Helpers::SinatraHelpers
|
register Kaminari::Helpers::SinatraHelpers
|
||||||
get '/users' do
|
get '/users' do
|
||||||
@page = params[:page] || 1
|
@page = params[:page] || 1
|
||||||
@users = User.page(@page).per(5)
|
@users = User.page(@page)
|
||||||
@options = {}
|
@options = {}
|
||||||
erb ERB_TEMPLATE_FOR_PAGINATE
|
erb ERB_TEMPLATE_FOR_PAGINATE
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/users'
|
|
||||||
last_document.search('.page').should have(6).items
|
|
||||||
last_document.search('.gap').should have(1).item
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should controll the inner window size' do
|
context 'normal paginations with Sinatra' do
|
||||||
|
before { get '/users' }
|
||||||
|
|
||||||
|
it 'should have a navigation tag' do
|
||||||
|
last_document.search('nav.pagination').should_not be_empty
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have pagination links' do
|
||||||
|
last_document.search('.page a').should have_at_least(1).items
|
||||||
|
last_document.search('.next a').should have_at_least(1).items
|
||||||
|
last_document.search('.last a').should have_at_least(1).items
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should point to current page' do
|
||||||
|
last_document.search('.current').text.should match(/1/)
|
||||||
|
|
||||||
|
get '/users?page=2'
|
||||||
|
last_document.search('.current').text.should match(/2/)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should load 25 users' do
|
||||||
|
last_document.search('li.user_info').should have(25).items
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should preserve params' do
|
||||||
|
get '/users?foo=bar'
|
||||||
|
last_document.search('.page a').should(be_all do |elm|
|
||||||
|
elm.attribute('href').value =~ /foo=bar/
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'optional paginations with Sinatra' do
|
||||||
|
it 'should have 5 windows with 1 gap' do
|
||||||
|
mock_app do
|
||||||
|
register Kaminari::Helpers::SinatraHelpers
|
||||||
|
get '/users' do
|
||||||
|
@page = params[:page] || 1
|
||||||
|
@users = User.page(@page).per(5)
|
||||||
|
@options = {}
|
||||||
|
erb ERB_TEMPLATE_FOR_PAGINATE
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/users'
|
||||||
|
last_document.search('.page').should have(6).items
|
||||||
|
last_document.search('.gap').should have(1).item
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should controll the inner window size' do
|
||||||
|
mock_app do
|
||||||
|
register Kaminari::Helpers::SinatraHelpers
|
||||||
|
get '/users' do
|
||||||
|
@page = params[:page] || 1
|
||||||
|
@users = User.page(@page).per(3)
|
||||||
|
@options = {:window => 10}
|
||||||
|
erb ERB_TEMPLATE_FOR_PAGINATE
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/users'
|
||||||
|
last_document.search('.page').should have(12).items
|
||||||
|
last_document.search('.gap').should have(1).item
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should specify a page param name' do
|
||||||
|
mock_app do
|
||||||
|
register Kaminari::Helpers::SinatraHelpers
|
||||||
|
get '/users' do
|
||||||
|
@page = params[:page] || 1
|
||||||
|
@users = User.page(@page).per(3)
|
||||||
|
@options = {:param_name => :user_page}
|
||||||
|
erb ERB_TEMPLATE_FOR_PAGINATE
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/users'
|
||||||
|
last_document.search('.page a').should(be_all do |elm|
|
||||||
|
elm.attribute('href').value =~ /user_page=\d+/
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#link_to_next_page' do
|
||||||
|
before do
|
||||||
mock_app do
|
mock_app do
|
||||||
register Kaminari::Helpers::SinatraHelpers
|
register Kaminari::Helpers::SinatraHelpers
|
||||||
get '/users' do
|
get '/users' do
|
||||||
@page = params[:page] || 1
|
@page = params[:page] || 1
|
||||||
@users = User.page(@page).per(3)
|
@users = User.page(@page)
|
||||||
@options = {:window => 10}
|
erb ERB_TEMPLATE_FOR_NEXT_PAGE
|
||||||
erb ERB_TEMPLATE_FOR_PAGINATE
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
get '/users'
|
get '/users_placeholder' do
|
||||||
last_document.search('.page').should have(12).items
|
|
||||||
last_document.search('.gap').should have(1).item
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should specify a page param name' do
|
|
||||||
mock_app do
|
|
||||||
register Kaminari::Helpers::SinatraHelpers
|
|
||||||
get '/users' do
|
|
||||||
@page = params[:page] || 1
|
@page = params[:page] || 1
|
||||||
@users = User.page(@page).per(3)
|
@options = {:placeholder => %{<span id='no_next_page'>No Next Page</span>}}
|
||||||
@options = {:param_name => :user_page}
|
@users = User.page(@page)
|
||||||
erb ERB_TEMPLATE_FOR_PAGINATE
|
erb ERB_TEMPLATE_FOR_NEXT_PAGE
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/users'
|
|
||||||
last_document.search('.page a').should(be_all do |elm|
|
|
||||||
elm.attribute('href').value =~ /user_page=\d+/
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '#link_to_next_page' do
|
context 'having more page' do
|
||||||
before do
|
it 'should have a more page link' do
|
||||||
mock_app do
|
get '/users'
|
||||||
register Kaminari::Helpers::SinatraHelpers
|
last_document.search('a#next_page_link').should be_present
|
||||||
get '/users' do
|
last_document.search('a#next_page_link').text.should match(/Next!/)
|
||||||
@page = params[:page] || 1
|
|
||||||
@users = User.page(@page)
|
|
||||||
erb ERB_TEMPLATE_FOR_NEXT_PAGE
|
|
||||||
end
|
|
||||||
|
|
||||||
get '/users_placeholder' do
|
|
||||||
@page = params[:page] || 1
|
|
||||||
@options = {:placeholder => %{<span id='no_next_page'>No Next Page</span>}}
|
|
||||||
@users = User.page(@page)
|
|
||||||
erb ERB_TEMPLATE_FOR_NEXT_PAGE
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'having more page' do
|
context 'the last page' do
|
||||||
it 'should have a more page link' do
|
it 'should not have a more page link' do
|
||||||
get '/users'
|
get '/users?page=2'
|
||||||
last_document.search('a#next_page_link').should be_present
|
last_document.search('a#next_page_link').should be_empty
|
||||||
last_document.search('a#next_page_link').text.should match(/Next!/)
|
end
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'the last page' do
|
it 'should have a no more page notation using placeholder' do
|
||||||
it 'should not have a more page link' do
|
get '/users_placeholder?page=2'
|
||||||
get '/users?page=2'
|
last_document.search('a#next_page_link').should be_empty
|
||||||
last_document.search('a#next_page_link').should be_empty
|
last_document.search('span#no_next_page').should be_present
|
||||||
end
|
last_document.search('span#no_next_page').text.should match(/No Next Page/)
|
||||||
|
end
|
||||||
it 'should have a no more page notation using placeholder' do
|
|
||||||
get '/users_placeholder?page=2'
|
|
||||||
last_document.search('a#next_page_link').should be_empty
|
|
||||||
last_document.search('span#no_next_page').should be_present
|
|
||||||
last_document.search('span#no_next_page').text.should match(/No Next Page/)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue