folio-pagination-legacy 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/.travis.yml +3 -0
- data/Gemfile +16 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +235 -0
- data/Rakefile +11 -0
- data/folio-pagination-legacy.gemspec +30 -0
- data/lib/folio-pagination-legacy.rb +3 -0
- data/lib/folio.rb +84 -0
- data/lib/folio/core_ext/enumerable.rb +51 -0
- data/lib/folio/invalid_page.rb +5 -0
- data/lib/folio/ordinal.rb +33 -0
- data/lib/folio/ordinal/page.rb +107 -0
- data/lib/folio/page.rb +86 -0
- data/lib/folio/per_page.rb +15 -0
- data/lib/folio/rails.rb +21 -0
- data/lib/folio/version.rb +3 -0
- data/lib/folio/will_paginate/active_record.rb +71 -0
- data/lib/folio/will_paginate/array.rb +10 -0
- data/lib/folio/will_paginate/collection.rb +19 -0
- data/lib/folio/will_paginate/view_helpers.rb +59 -0
- data/lib/folio/will_paginate/view_helpers/action_view.rb +10 -0
- data/lib/folio/will_paginate/view_helpers/link_renderer.rb +53 -0
- data/test/folio/core_ext/enumerable_test.rb +55 -0
- data/test/folio/ordinal/page_test.rb +173 -0
- data/test/folio/ordinal_test.rb +57 -0
- data/test/folio/page_test.rb +198 -0
- data/test/folio/per_page_test.rb +49 -0
- data/test/folio/rails_test.rb +11 -0
- data/test/folio/version_test.rb +8 -0
- data/test/folio/will_paginate/active_record_test.rb +113 -0
- data/test/folio/will_paginate/collection_test.rb +43 -0
- data/test/folio/will_paginate/view_helpers/link_renderer_test.rb +160 -0
- data/test/folio/will_paginate/view_helpers_test.rb +49 -0
- data/test/folio_test.rb +192 -0
- data/test/setup/active_record.rb +13 -0
- metadata +133 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
begin
|
2
|
+
require 'will_paginate/view_helpers/action_view'
|
3
|
+
rescue LoadError
|
4
|
+
raise "folio-pagination's actionview support requires will_paginate"
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'folio/will_paginate/view_helpers'
|
8
|
+
|
9
|
+
# no overrides specific to action view necessary. just including the general
|
10
|
+
# view_helper overrides as above is sufficient.
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'will_paginate/view_helpers'
|
3
|
+
|
4
|
+
module Folio
|
5
|
+
module WillPaginate
|
6
|
+
module ViewHelpers
|
7
|
+
module LinkRenderer
|
8
|
+
def prepare_with_folio(collection, options, template)
|
9
|
+
# only include page_links if we're in a collection with ordinal
|
10
|
+
# pages; otherwise stick to just prev/next.
|
11
|
+
options = options.merge(page_links: false) unless collection.ordinal_pages?
|
12
|
+
prepare_without_folio(collection, options, template)
|
13
|
+
end
|
14
|
+
|
15
|
+
def windowed_links_with_folio
|
16
|
+
links = windowed_links_without_folio
|
17
|
+
unless @collection.last_page
|
18
|
+
# the last page is not known, so add a trailing gap
|
19
|
+
links << gap_marker
|
20
|
+
end
|
21
|
+
links
|
22
|
+
end
|
23
|
+
|
24
|
+
def total_pages_with_folio
|
25
|
+
# the collection may not have a known last page. if so, there must be
|
26
|
+
# a next page; count that as the last known page. it's ok to use
|
27
|
+
# these page identifiers as a page count because (after fixing
|
28
|
+
# LinkRenderer) it's only called when ordinal_pages is true.
|
29
|
+
@collection.last_page || @collection.next_page
|
30
|
+
end
|
31
|
+
|
32
|
+
def rel_value_with_folio(page)
|
33
|
+
# don't check against mathed out values, just check the values on the
|
34
|
+
# collection
|
35
|
+
rels = []
|
36
|
+
rels << 'prev' if page == @collection.previous_page
|
37
|
+
rels << 'next' if page == @collection.next_page
|
38
|
+
rels << 'start' if page == @collection.first_page
|
39
|
+
rels.empty? ? nil : rels.join(' ')
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.included(klass)
|
43
|
+
[:prepare, :windowed_links, :total_pages, :rel_value].each do |method|
|
44
|
+
klass.send(:alias_method, :"#{method}_without_folio", method)
|
45
|
+
klass.send(:alias_method, method, :"#{method}_with_folio")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
::WillPaginate::LinkRenderer.send :include, self
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'folio/core_ext/enumerable'
|
3
|
+
|
4
|
+
describe Array do
|
5
|
+
it "should be an ordinal folio" do
|
6
|
+
assert_respond_to [], :build_page
|
7
|
+
[].build_page.first_page.must_equal 1
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "per_page" do
|
11
|
+
it "should have per_page attribute as expected on instances" do
|
12
|
+
assert_respond_to [], :per_page
|
13
|
+
assert_respond_to [], :per_page=
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should not have per_page attribute on classes" do
|
17
|
+
Array.wont_respond_to :per_page
|
18
|
+
Array.wont_respond_to :per_page=
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should default to Folio.per_page" do
|
22
|
+
was = Folio.per_page
|
23
|
+
Folio.per_page = 100
|
24
|
+
[].per_page.must_equal 100
|
25
|
+
Folio.per_page = was
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "paginate" do
|
30
|
+
before do
|
31
|
+
@ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return a page" do
|
35
|
+
page = @ary.paginate
|
36
|
+
assert_respond_to page, :current_page
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return appropriate slice" do
|
40
|
+
@ary.paginate(page: 2, per_page: 4).must_equal [5, 6, 7, 8]
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return partial slice at end" do
|
44
|
+
@ary.paginate(page: 3, per_page: 4).must_equal [9, 10]
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should raise InvalidPage after end even if size unknown" do
|
48
|
+
lambda{ @ary.paginate(page: 3, per_page: 5, total_entries: nil) }.must_raise Folio::InvalidPage
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return empty first page if empty" do
|
52
|
+
[].paginate.must_equal []
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'folio/ordinal'
|
3
|
+
|
4
|
+
describe Folio::Ordinal::Page do
|
5
|
+
before do
|
6
|
+
@page = Folio::Ordinal::Page.create
|
7
|
+
@page.current_page = 1
|
8
|
+
@page.per_page = 10
|
9
|
+
@page.total_entries = 30
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have ordinal_pages=true" do
|
13
|
+
@page.ordinal_pages.must_equal true
|
14
|
+
@page.ordinal_pages?.must_equal true
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have first_page=1" do
|
18
|
+
@page.first_page.must_equal 1
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should force current_page to an integer" do
|
22
|
+
@page.current_page = "3"
|
23
|
+
@page.current_page.must_equal 3
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "when total pages known" do
|
27
|
+
it "should have last_page=total_pages" do
|
28
|
+
@page.last_page.must_equal @page.total_pages
|
29
|
+
|
30
|
+
@page.total_entries = 0
|
31
|
+
@page.last_page.must_equal @page.total_pages
|
32
|
+
|
33
|
+
@page.total_entries = nil
|
34
|
+
@page.last_page.must_equal @page.total_pages
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have next_page=current_page+1 when not at end" do
|
38
|
+
@page.current_page = 2
|
39
|
+
@page.next_page.must_equal 3
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should still have next_page=current_page+1 when not at end, despite set value" do
|
43
|
+
@page.current_page = 2
|
44
|
+
@page.next_page = nil
|
45
|
+
@page.next_page.must_equal 3
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should have next_page=nil when at end" do
|
49
|
+
@page.current_page = 3
|
50
|
+
@page.next_page.must_be_nil
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should still have next_page=nil when at end, despite set value" do
|
54
|
+
@page.current_page = 3
|
55
|
+
@page.next_page = 4
|
56
|
+
@page.next_page.must_be_nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "when total pages not known" do
|
61
|
+
before do
|
62
|
+
@page.total_entries = nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should have last_page=nil if next_page is known or assumed" do
|
66
|
+
# @page.next_page unset
|
67
|
+
@page.last_page.must_be_nil
|
68
|
+
|
69
|
+
# @page.next_page explicitly non-nil
|
70
|
+
@page.next_page = 2
|
71
|
+
@page.last_page.must_be_nil
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should have last_page=current_page if next_page is explicitly nil" do
|
75
|
+
@page.next_page = nil
|
76
|
+
@page.last_page.must_equal @page.current_page
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should have next_page=current_page+1 when not explicitly set" do
|
80
|
+
@page.current_page = 2
|
81
|
+
@page.next_page.must_equal 3
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should force non-nil set next_page to an integer" do
|
85
|
+
@page.next_page = "4"
|
86
|
+
@page.next_page.must_equal 4
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should not force nil set next_page to an integer" do
|
90
|
+
@page.next_page = nil
|
91
|
+
@page.next_page.must_be_nil
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should have next_page=set value when explicitly set" do
|
95
|
+
@page.next_page = nil
|
96
|
+
@page.current_page = 2
|
97
|
+
@page.next_page.must_be_nil
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should have previous_page=nil when at beginning" do
|
102
|
+
@page.current_page = 1
|
103
|
+
@page.previous_page.must_be_nil
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should have previous_page=current_page-1 when not at beginning" do
|
107
|
+
@page.current_page = 3
|
108
|
+
@page.previous_page.must_equal 2
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "out_of_bounds?" do
|
112
|
+
it "should be false if in first_page..last_page range" do
|
113
|
+
@page.current_page = 1
|
114
|
+
@page.out_of_bounds?.must_equal false
|
115
|
+
|
116
|
+
@page.current_page = 3
|
117
|
+
@page.out_of_bounds?.must_equal false
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should be true if negative page" do
|
121
|
+
@page.current_page = -1
|
122
|
+
@page.out_of_bounds?.must_equal true
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should be true if zero page" do
|
126
|
+
@page.current_page = 0
|
127
|
+
@page.out_of_bounds?.must_equal true
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should be true after known last_page" do
|
131
|
+
@page.current_page = 4
|
132
|
+
@page.out_of_bounds?.must_equal true
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should not care about large numbers when total_pages not known" do
|
136
|
+
@page.total_entries = nil
|
137
|
+
@page.current_page = 50
|
138
|
+
@page.out_of_bounds?.must_equal false
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe "decorate" do
|
143
|
+
before do
|
144
|
+
@page = Folio::Ordinal::Page.decorate([])
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should add page methods to the object" do
|
148
|
+
assert_respond_to @page, :current_page
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should add ordinal page methods to the object" do
|
152
|
+
@page.first_page.must_equal 1
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should preserve other methods on the object" do
|
156
|
+
assert_respond_to @page, :each
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
describe "create" do
|
161
|
+
before do
|
162
|
+
@page = Folio::Ordinal::Page.create
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should be an Array at heart" do
|
166
|
+
@page.must_be :is_a?, Array
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should be decorated as an ordinal page" do
|
170
|
+
@page.first_page.must_equal 1
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'folio/ordinal'
|
3
|
+
|
4
|
+
describe Folio::Ordinal do
|
5
|
+
before do
|
6
|
+
klass = Class.new do
|
7
|
+
def build_page
|
8
|
+
Folio::Page.create
|
9
|
+
end
|
10
|
+
|
11
|
+
def fill_page(page)
|
12
|
+
page
|
13
|
+
end
|
14
|
+
|
15
|
+
include Folio::Ordinal
|
16
|
+
end
|
17
|
+
@folio = klass.new
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "paginate" do
|
21
|
+
it "should decorate the result of build_page" do
|
22
|
+
@page = @folio.paginate
|
23
|
+
@page.is_a?(Folio::Ordinal::Page).must_equal true
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "bounds checking" do
|
27
|
+
before do
|
28
|
+
@folio.per_page = 10
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should raise on non-integer page" do
|
32
|
+
lambda{ @folio.paginate(page: "non-integer") }.must_raise Folio::InvalidPage
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should raise on negative page" do
|
36
|
+
lambda{ @folio.paginate(page: -1) }.must_raise Folio::InvalidPage
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should raise on page of 0" do
|
40
|
+
lambda{ @folio.paginate(page: 0) }.must_raise Folio::InvalidPage
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should raise on page greater than known last_page" do
|
44
|
+
lambda{ @folio.paginate(page: 4, total_entries: 30) }.must_raise Folio::InvalidPage
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should not raise on page number between first_page and known last_page" do
|
48
|
+
@folio.paginate(page: 1, total_entries: 30)
|
49
|
+
@folio.paginate(page: 3, total_entries: 30)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should not raise on large page if last_page unknown" do
|
53
|
+
@folio.paginate(page: 100)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'folio/page'
|
3
|
+
require 'folio'
|
4
|
+
|
5
|
+
describe Folio::Page do
|
6
|
+
before do
|
7
|
+
@page = Folio::Page.create
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "ordinal_pages" do
|
11
|
+
it "should have ordinal_pages accessors" do
|
12
|
+
assert_respond_to @page, :ordinal_pages
|
13
|
+
assert_respond_to @page, :ordinal_pages=
|
14
|
+
assert_respond_to @page, :ordinal_pages?
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should mutate with ordinal_pages=" do
|
18
|
+
@page.ordinal_pages = true
|
19
|
+
@page.ordinal_pages.must_equal true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should alias reader as predicate" do
|
23
|
+
@page.ordinal_pages = true
|
24
|
+
@page.ordinal_pages?.must_equal true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "current_page" do
|
29
|
+
it "should have current_page accessors" do
|
30
|
+
assert_respond_to @page, :current_page
|
31
|
+
assert_respond_to @page, :current_page=
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should mutate with current_page=" do
|
35
|
+
@page.current_page = 3
|
36
|
+
@page.current_page.must_equal 3
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "per_page" do
|
41
|
+
it "should have per_page accessors" do
|
42
|
+
assert_respond_to @page, :per_page
|
43
|
+
assert_respond_to @page, :per_page=
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should mutate with per_page=" do
|
47
|
+
@page.per_page = 3
|
48
|
+
@page.per_page.must_equal 3
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should default to Folio.per_page" do
|
52
|
+
was = Folio.per_page
|
53
|
+
Folio.per_page = 100
|
54
|
+
@page.per_page.must_equal Folio.per_page
|
55
|
+
Folio.per_page = was
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "first_page" do
|
60
|
+
it "should have first_page accessors" do
|
61
|
+
assert_respond_to @page, :first_page
|
62
|
+
assert_respond_to @page, :first_page=
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should mutate with first_page=" do
|
66
|
+
@page.first_page = 3
|
67
|
+
@page.first_page.must_equal 3
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "last_page" do
|
72
|
+
it "should have last_page accessors" do
|
73
|
+
assert_respond_to @page, :last_page
|
74
|
+
assert_respond_to @page, :last_page=
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should mutate with last_page= when next_page is non-nil" do
|
78
|
+
@page.next_page = 3
|
79
|
+
@page.last_page = 5
|
80
|
+
@page.last_page.must_equal 5
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should default last_page=nil if unset and next_page is non-nil" do
|
84
|
+
@page.current_page = 2
|
85
|
+
@page.next_page = 3
|
86
|
+
@page.last_page.must_be_nil
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should default last_page=current_page if unset and next_page is nil" do
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should have last_page=current_page if next_page is nil, even if explicitly set" do
|
93
|
+
@page.current_page = 2
|
94
|
+
@page.last_page.must_equal 2
|
95
|
+
|
96
|
+
@page.last_page = 4
|
97
|
+
@page.last_page.must_equal 2
|
98
|
+
|
99
|
+
@page.last_page = nil
|
100
|
+
@page.last_page.must_equal 2
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "next_page" do
|
105
|
+
it "should have next_page accessors" do
|
106
|
+
assert_respond_to @page, :next_page
|
107
|
+
assert_respond_to @page, :next_page=
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should mutate with next_page=" do
|
111
|
+
@page.next_page = 3
|
112
|
+
@page.next_page.must_equal 3
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "previous_page" do
|
117
|
+
it "should have previous_page accessors" do
|
118
|
+
assert_respond_to @page, :previous_page
|
119
|
+
assert_respond_to @page, :previous_page=
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should mutate with previous_page=" do
|
123
|
+
@page.previous_page = 3
|
124
|
+
@page.previous_page.must_equal 3
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "total_entries" do
|
129
|
+
it "should have total_entries accessors" do
|
130
|
+
assert_respond_to @page, :total_entries
|
131
|
+
assert_respond_to @page, :total_entries=
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should mutate with total_entries=" do
|
135
|
+
@page.total_entries = 3
|
136
|
+
@page.total_entries.must_equal 3
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe "total_pages" do
|
141
|
+
before do
|
142
|
+
@page.total_entries = 10
|
143
|
+
@page.per_page = 5
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should be nil if total_entries is nil" do
|
147
|
+
@page.total_entries = nil
|
148
|
+
@page.total_pages.must_be_nil
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should be nil if per_page is 0" do
|
152
|
+
@page.per_page = 0
|
153
|
+
@page.total_pages.must_be_nil
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should be 1 if total_entries is 0" do
|
157
|
+
@page.total_entries = 0
|
158
|
+
@page.total_pages.must_equal 1
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should be total_entries/per_page if evenly divisible" do
|
162
|
+
@page.total_pages.must_equal 2
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should round up if not evenly divisible" do
|
166
|
+
@page.per_page = 3
|
167
|
+
@page.total_pages.must_equal 4
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe "decorate" do
|
172
|
+
before do
|
173
|
+
@page = Folio::Page.decorate([])
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should add page methods to the object" do
|
177
|
+
assert_respond_to @page, :current_page
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should preserve other methods on the object" do
|
181
|
+
assert_respond_to @page, :each
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe "create" do
|
186
|
+
before do
|
187
|
+
@page = Folio::Page.create
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should be an Array at heart" do
|
191
|
+
@page.must_be :is_a?, Array
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should be decorated as a page" do
|
195
|
+
assert_respond_to @page, :current_page
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|