This test depends on ActionView
This commit is contained in:
parent
56e34191d3
commit
d1f12423e1
|
@ -1,71 +1,73 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class PaginatorTagsTest < ActionView::TestCase
|
if defined? ActionView
|
||||||
# A test paginator that can detect instantiated tags inside
|
class PaginatorTagsTest < ActionView::TestCase
|
||||||
class TagSpy < Kaminari::Helpers::Paginator
|
# A test paginator that can detect instantiated tags inside
|
||||||
def initialize(*)
|
class TagSpy < Kaminari::Helpers::Paginator
|
||||||
super
|
def initialize(*)
|
||||||
@tags = []
|
super
|
||||||
|
@tags = []
|
||||||
|
end
|
||||||
|
|
||||||
|
def page_tag(page)
|
||||||
|
@tags << page.to_i
|
||||||
|
super
|
||||||
|
end
|
||||||
|
|
||||||
|
%w[first_page prev_page next_page last_page gap].each do |tag|
|
||||||
|
eval <<-DEF, nil, __FILE__, __LINE__ + 1
|
||||||
|
def #{tag}_tag
|
||||||
|
@tags << :#{tag}
|
||||||
|
super
|
||||||
|
end
|
||||||
|
DEF
|
||||||
|
end
|
||||||
|
|
||||||
|
def partial_path
|
||||||
|
'kaminari/paginator'
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
super
|
||||||
|
@tags
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_tag(page)
|
def tags_for(collection, window: 4, outer_window: 0)
|
||||||
@tags << page.to_i
|
view.paginate(collection, paginator_class: TagSpy, window: window, outer_window: outer_window, params: {controller: 'users', action: 'index'})
|
||||||
super
|
|
||||||
end
|
end
|
||||||
|
|
||||||
%w[first_page prev_page next_page last_page gap].each do |tag|
|
teardown do
|
||||||
eval <<-DEF, nil, __FILE__, __LINE__ + 1
|
User.delete_all
|
||||||
def #{tag}_tag
|
|
||||||
@tags << :#{tag}
|
|
||||||
super
|
|
||||||
end
|
|
||||||
DEF
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def partial_path
|
test '1 page in total' do
|
||||||
'kaminari/paginator'
|
3.times {|i| User.create! name: "user#{i}"}
|
||||||
|
assert_empty tags_for(User.page(1).per(3))
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
sub_test_case 'when having 1 outer_window (and 1 inner window)' do
|
||||||
super
|
def tags_for(collection, window: 1, outer_window: 1)
|
||||||
@tags
|
super
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def tags_for(collection, window: 4, outer_window: 0)
|
test '10 pages in total' do
|
||||||
view.paginate(collection, paginator_class: TagSpy, window: window, outer_window: outer_window, params: {controller: 'users', action: 'index'})
|
20.times {|i| User.create! name: "user#{i}"}
|
||||||
end
|
|
||||||
|
|
||||||
teardown do
|
assert_equal [1, 2, :gap, 10, :next_page, :last_page], tags_for(User.page(1).per(2))
|
||||||
User.delete_all
|
assert_equal [:first_page, :prev_page, 1, 2, 3, :gap, 10, :next_page, :last_page], tags_for(User.page(2).per(2))
|
||||||
end
|
assert_equal [:first_page, :prev_page, 1, 2, 3, 4, :gap, 10, :next_page, :last_page], tags_for(User.page(3).per(2))
|
||||||
|
# the 3rd page doesn't become a gap because it's a single gap
|
||||||
test '1 page in total' do
|
assert_equal [:first_page, :prev_page, 1, 2, 3, 4, 5, :gap, 10, :next_page, :last_page], tags_for(User.page(4).per(2))
|
||||||
3.times {|i| User.create! name: "user#{i}"}
|
assert_equal [:first_page, :prev_page, 1, :gap, 4, 5, 6, :gap, 10, :next_page, :last_page], tags_for(User.page(5).per(2))
|
||||||
assert_empty tags_for(User.page(1).per(3))
|
assert_equal [:first_page, :prev_page, 1, :gap, 5, 6, 7, :gap, 10, :next_page, :last_page], tags_for(User.page(6).per(2))
|
||||||
end
|
# the 9th page doesn't become a gap because it's a single gap
|
||||||
|
assert_equal [:first_page, :prev_page, 1, :gap, 6, 7, 8, 9, 10, :next_page, :last_page], tags_for(User.page(7).per(2))
|
||||||
sub_test_case 'when having 1 outer_window (and 1 inner window)' do
|
assert_equal [:first_page, :prev_page, 1, :gap, 7, 8, 9, 10, :next_page, :last_page], tags_for(User.page(8).per(2))
|
||||||
def tags_for(collection, window: 1, outer_window: 1)
|
assert_equal [:first_page, :prev_page, 1, :gap, 8, 9, 10, :next_page, :last_page], tags_for(User.page(9).per(2))
|
||||||
super
|
assert_equal [:first_page, :prev_page, 1, :gap, 9, 10], tags_for(User.page(10).per(2))
|
||||||
end
|
end
|
||||||
|
|
||||||
test '10 pages in total' do
|
|
||||||
20.times {|i| User.create! name: "user#{i}"}
|
|
||||||
|
|
||||||
assert_equal [1, 2, :gap, 10, :next_page, :last_page], tags_for(User.page(1).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, 2, 3, :gap, 10, :next_page, :last_page], tags_for(User.page(2).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, 2, 3, 4, :gap, 10, :next_page, :last_page], tags_for(User.page(3).per(2))
|
|
||||||
# the 3rd page doesn't become a gap because it's a single gap
|
|
||||||
assert_equal [:first_page, :prev_page, 1, 2, 3, 4, 5, :gap, 10, :next_page, :last_page], tags_for(User.page(4).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, :gap, 4, 5, 6, :gap, 10, :next_page, :last_page], tags_for(User.page(5).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, :gap, 5, 6, 7, :gap, 10, :next_page, :last_page], tags_for(User.page(6).per(2))
|
|
||||||
# the 9th page doesn't become a gap because it's a single gap
|
|
||||||
assert_equal [:first_page, :prev_page, 1, :gap, 6, 7, 8, 9, 10, :next_page, :last_page], tags_for(User.page(7).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, :gap, 7, 8, 9, 10, :next_page, :last_page], tags_for(User.page(8).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, :gap, 8, 9, 10, :next_page, :last_page], tags_for(User.page(9).per(2))
|
|
||||||
assert_equal [:first_page, :prev_page, 1, :gap, 9, 10], tags_for(User.page(10).per(2))
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue