paginate 2.0.0 → 3.0.0

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.
@@ -1,24 +1,24 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Thing do
4
- let!(:things) { Array.new(15) {|i| Thing.create!(:name => "THING") } }
4
+ let!(:things) { Array.new(15) {|i| Thing.create!(name: "THING") } }
5
5
  before { Paginate::Config.size = 10 }
6
6
 
7
7
  it { expect(Thing).to respond_to(:paginate) }
8
8
 
9
9
  it "uses default options" do
10
- items = Thing.limit(11).all
11
- expect(Thing.paginate.all).to eql(items)
10
+ items = Thing.limit(11).to_a
11
+ expect(Thing.paginate.to_a).to eql(items)
12
12
 
13
- items = Thing.limit(11).offset(10).all
14
- expect(Thing.paginate(:page => 2).all).to eql(items)
13
+ items = Thing.limit(11).offset(10).to_a
14
+ expect(Thing.paginate(page: 2).to_a).to eql(items)
15
15
  end
16
16
 
17
17
  it "uses custom options" do
18
- items = Thing.limit(6).all
19
- expect(Thing.paginate(:size => 5).all).to eql(items)
18
+ items = Thing.limit(6).to_a
19
+ expect(Thing.paginate(size: 5).to_a).to eql(items)
20
20
 
21
- items = Thing.limit(6).offset(5).all
22
- expect(Thing.paginate(:size => 5, :page => 2).all).to eql(items)
21
+ items = Thing.limit(6).offset(5).to_a
22
+ expect(Thing.paginate(size: 5, page: 2).to_a).to eql(items)
23
23
  end
24
24
  end
@@ -1,68 +1,70 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Paginate::Base do
4
+ let(:scope) { double }
5
+
4
6
  it "returns page from integer" do
5
- expect(Paginate::Base.new(12).page).to eql(12)
7
+ expect(Paginate::Base.new(scope, 12).page).to eql(12)
6
8
  end
7
9
 
8
10
  it "returns page from string" do
9
- expect(Paginate::Base.new("12").page).to eql(12)
11
+ expect(Paginate::Base.new(scope, "12").page).to eql(12)
10
12
  end
11
13
 
12
14
  it "defaults to page 1" do
13
- expect(Paginate::Base.new.page).to eql(1)
15
+ expect(Paginate::Base.new(scope).page).to eql(1)
14
16
  end
15
17
 
16
18
  it "returns page from options" do
17
- expect(Paginate::Base.new(:page => 12).page).to eql(12)
19
+ expect(Paginate::Base.new(scope, page: 12).page).to eql(12)
18
20
  end
19
21
 
20
22
  it "returns limit from configuration" do
21
23
  Paginate::Config.size = 25
22
- expect(Paginate::Base.new.limit).to eql(26)
24
+ expect(Paginate::Base.new(scope).limit).to eql(26)
23
25
  end
24
26
 
25
27
  it "returns limit from options" do
26
28
  Paginate::Config.size = 25
27
- expect(Paginate::Base.new(:size => 13).limit).to eql(14)
29
+ expect(Paginate::Base.new(scope, size: 13).limit).to eql(14)
28
30
  end
29
31
 
30
32
  it "returns default limit" do
31
33
  Paginate::Config.size = nil
32
- expect(Paginate::Base.new.limit).to eql(11)
34
+ expect(Paginate::Base.new(scope).limit).to eql(11)
33
35
  end
34
36
 
35
37
  it "returns offset from configuration" do
36
38
  Paginate::Config.size = 15
37
- expect(Paginate::Base.new(:page => 2).offset).to eql(15)
39
+ expect(Paginate::Base.new(scope, page: 2).offset).to eql(15)
38
40
  end
39
41
 
40
42
  it "returns offset from options" do
41
- expect(Paginate::Base.new(:page => 2, :size => 5).offset).to eql(5)
43
+ expect(Paginate::Base.new(scope, page: 2, size: 5).offset).to eql(5)
42
44
  end
43
45
 
44
46
  it "returns finder options" do
45
- actual = Paginate::Base.new(:page => 3, :size => 5).to_options
46
- expected = {:limit => 6, :offset => 10}
47
+ actual = Paginate::Base.new(scope, page: 3, size: 5).to_options
48
+ expected = {limit: 6, offset: 10}
47
49
 
48
50
  expect(actual).to eql(expected)
49
51
  end
50
52
 
51
53
  specify {
52
- Paginate::Base.new(:page => 1, :size => 5, :collection => Array.new(6))
54
+ Paginate::Base.new(scope, page: 1, size: 5, collection: Array.new(6))
53
55
  .should have_next_page
54
56
  }
55
57
 
56
58
  specify {
57
- Paginate::Base.new(:page => 1, :size => 5, :collection => Array.new(5))
59
+ Paginate::Base.new(scope, page: 1, size: 5, collection: Array.new(5))
58
60
  .should_not have_next_page
59
61
  }
60
62
 
61
63
  specify {
62
- Paginate::Base.new(:page => 2).should have_previous_page
64
+ Paginate::Base.new(scope, page: 2).should have_previous_page
63
65
  }
64
66
 
65
67
  specify {
66
- Paginate::Base.new(:page => 1).should_not have_previous_page
68
+ Paginate::Base.new(scope, page: 1).should_not have_previous_page
67
69
  }
68
70
  end
@@ -1,6 +1,16 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Paginate::Config do
4
+ context "sets default configuration" do
5
+ before do
6
+ load "paginate.rb"
7
+ end
8
+
9
+ it { expect(Paginate::Config.param_name).to eql(:page) }
10
+ it { expect(Paginate::Config.renderer).to eql(Paginate::Renderer::List) }
11
+ it { expect(Paginate::Config.size).to eql(10) }
12
+ end
13
+
4
14
  it "yields configuration class" do
5
15
  Paginate.configure do |config|
6
16
  config.param_name = :p
@@ -15,9 +25,15 @@ describe Paginate::Config do
15
25
  Paginate.configure do |config|
16
26
  config.param_name = :p
17
27
  config.size = 25
28
+ config.renderer = Paginate::Renderer::List
18
29
  end
19
30
 
20
- options = {:param_name => :p, :size => 25}
31
+ options = {
32
+ param_name: :p,
33
+ size: 25,
34
+ renderer: Paginate::Renderer::List
35
+ }
36
+
21
37
  expect(Paginate::Config.to_hash).to eql(options)
22
38
  end
23
39
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Paginate::Renderer do
3
+ describe Paginate::Renderer::Base do
4
4
  before do
5
5
  Paginate.configure do |config|
6
6
  config.param_name = :page
@@ -9,15 +9,13 @@ describe Paginate::Renderer do
9
9
 
10
10
  I18n.locale = :en
11
11
 
12
- @renderer = Paginate::Renderer.new({
13
- :collection => Array.new(11),
14
- :page => 1,
15
- :fullpath => "/some/path"
12
+ @renderer = Paginate::Renderer::Base.new(nil, {
13
+ collection: Array.new(11),
14
+ page: 1,
15
+ fullpath: "/some/path"
16
16
  })
17
17
  end
18
18
 
19
- specify { @renderer.render.should be_html_safe }
20
-
21
19
  it "parses simple url" do
22
20
  @renderer.options[:url] = "/some/path"
23
21
  expect(@renderer.url_for(1)).to eql("/some/path?page=1")
@@ -0,0 +1,111 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require "spec_helper"
3
+
4
+ describe Paginate::Renderer::List do
5
+ before do
6
+ Paginate.configure do |config|
7
+ config.param_name = :page
8
+ config.size = 10
9
+ end
10
+
11
+ I18n.locale = :en
12
+
13
+ @renderer = Paginate::Renderer::List.new(nil, {
14
+ collection: Array.new(11),
15
+ page: 1,
16
+ fullpath: "/some/path"
17
+ })
18
+ end
19
+
20
+ it { expect(@renderer.render).to be_html_safe }
21
+ it { expect(@renderer.previous_label).to eql(I18n.t("paginate.previous")) }
22
+ it { expect(@renderer.next_label).to eql(I18n.t("paginate.next")) }
23
+ it { expect(@renderer.page_label).to eql(I18n.t("paginate.page", page: 1)) }
24
+
25
+ it "displays current page" do
26
+ @renderer.processor.stub page: 1234
27
+
28
+ html = Nokogiri::HTML(@renderer.render)
29
+ span = html.css("li.page > span").first
30
+
31
+ expect(span).to be
32
+ expect(span.text).to eql("Page 1234")
33
+ end
34
+
35
+ it "translates strings" do
36
+ I18n.locale = "pt-BR"
37
+ @renderer.processor.stub page: 10
38
+
39
+ html = Nokogiri::HTML(@renderer.render)
40
+
41
+ expect(html.css("li.page > span").text).to eql("Página 10")
42
+ expect(html.css("li.next-page > a").text).to eql("Próxima página")
43
+ expect(html.css("li.previous-page > a").text).to eql("Página anterior")
44
+ end
45
+
46
+ it "displays previous page link" do
47
+ @renderer.processor.stub page: 2
48
+
49
+ html = Nokogiri::HTML(@renderer.render)
50
+ link = html.css("li.previous-page > a").first
51
+
52
+ expect(link).to be
53
+ expect(link["href"]).to eql("/some/path?page=1")
54
+ expect(link.text).to eql("Previous page")
55
+ end
56
+
57
+ it "displays next page link" do
58
+ @renderer.processor.stub page: 1
59
+
60
+ html = Nokogiri::HTML(@renderer.render)
61
+ link = html.css("li.next-page > a").first
62
+
63
+ expect(link).to be
64
+ expect(link["href"]).to eql("/some/path?page=2")
65
+ expect(link.text).to eql("Next page")
66
+ end
67
+
68
+ it "displays pagination list" do
69
+ html = Nokogiri::HTML(@renderer.render)
70
+
71
+ expect(html.css("ul.paginate").count).to eql(1)
72
+ expect(html.css("ul.paginate > li").count).to eql(3)
73
+ end
74
+
75
+ context "when have no items" do
76
+ it "adds .disabled class to the list" do
77
+ @renderer.processor.stub next_page?: false, previous_page?: false
78
+
79
+ html = Nokogiri::HTML(@renderer.render)
80
+ expect(html.css("ul.paginate.disabled").first).to be
81
+ end
82
+ end
83
+
84
+ context "when have no next page" do
85
+ it "disables the element" do
86
+ @renderer.processor.stub :next_page?
87
+
88
+ html = Nokogiri::HTML(@renderer.render)
89
+ link = html.css("li.next-page > a").first
90
+ span = html.css("li.next-page.disabled > span").first
91
+
92
+ expect(link).not_to be
93
+ expect(span).to be
94
+ expect(span.text).to eql("Next page")
95
+ end
96
+ end
97
+
98
+ context "when no previous page" do
99
+ it "disables the element" do
100
+ @renderer.processor.stub :previous_page?
101
+
102
+ html = Nokogiri::HTML(@renderer.render)
103
+ link = html.css("li.previous-page > a").first
104
+ span = html.css("li.previous-page.disabled > span").first
105
+
106
+ expect(link).not_to be
107
+ expect(span).to be
108
+ expect(span.text).to eql("Previous page")
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+
3
+ describe Paginate::Renderer::More do
4
+ before do
5
+ Paginate.configure do |config|
6
+ config.param_name = :page
7
+ config.size = 10
8
+ end
9
+
10
+ I18n.locale = :en
11
+
12
+ @renderer = Paginate::Renderer::More.new(nil, {
13
+ collection: Array.new(11),
14
+ page: 1,
15
+ fullpath: "/some/path"
16
+ })
17
+ end
18
+
19
+ it { expect(@renderer.render).to be_html_safe }
20
+ it { expect(@renderer.more_label).to eql(I18n.t("paginate.more")) }
21
+
22
+ context "when have no next page" do
23
+ it "returns nil" do
24
+ @renderer.processor.stub :next_page?
25
+ expect(@renderer.render).to be_nil
26
+ end
27
+ end
28
+
29
+ context "when have next page" do
30
+ it "returns html" do
31
+ html = Nokogiri::HTML(@renderer.render)
32
+ selector = "p.paginate > a.more"
33
+
34
+ expect(html.css(selector).text).to eql(@renderer.more_label)
35
+ expect(html.css(selector).first[:href]).to eql(@renderer.next_url)
36
+ end
37
+ end
38
+ end
@@ -1,23 +1,25 @@
1
- require "bundler"
2
- Bundler.setup
3
- Bundler.require(:default, :development)
1
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
2
+ require "bundler/setup"
4
3
 
4
+ require "logger"
5
5
  require "rspec"
6
6
  require "nokogiri"
7
7
  require "ostruct"
8
8
  require "sqlite3"
9
9
  require "test_notifier/runner/rspec"
10
+ require "rails"
10
11
 
12
+ require "active_record"
11
13
  require "active_support/all"
12
14
  require "action_view"
13
15
  require "action_controller"
14
-
15
- ActiveRecord::Base
16
- .establish_connection(:adapter => "sqlite3", :database => ":memory:")
17
- Rails = OpenStruct.new(:version => ActiveRecord::VERSION::STRING)
18
-
19
16
  require "paginate"
20
17
 
18
+ ActiveRecord::Base.establish_connection(
19
+ adapter: "sqlite3",
20
+ database: ":memory:"
21
+ )
22
+
21
23
  load "spec/schema.rb"
22
24
 
23
25
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|file| require file}
@@ -3,9 +3,11 @@ en:
3
3
  next: "Next page"
4
4
  previous: "Previous page"
5
5
  page: "Page %{page}"
6
+ more: "Load more"
6
7
 
7
8
  pt-BR:
8
9
  paginate:
9
10
  next: "Próxima página"
10
11
  previous: "Página anterior"
11
12
  page: "Página %{page}"
13
+ more: "Carregar mais"
@@ -1 +1 @@
1
- <%= render items, :paginate => true, :partial => "number" %>
1
+ <%= render items, paginate: true, partial: "number" %>
metadata CHANGED
@@ -1,142 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paginate
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
5
- prerelease:
4
+ version: 3.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nando Vieira
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-21 00:00:00.000000000 Z
11
+ date: 2013-06-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: nokogiri
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: test_notifier
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: sqlite3-ruby
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
- name: activesupport
56
+ name: rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ~>
68
60
  - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: activerecord
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: actionpack
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
61
+ version: 4.0.0
102
62
  type: :development
103
63
  prerelease: false
104
64
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
65
  requirements:
107
- - - ! '>='
66
+ - - ~>
108
67
  - !ruby/object:Gem::Version
109
- version: '0'
68
+ version: 4.0.0
110
69
  - !ruby/object:Gem::Dependency
111
70
  name: rspec
112
71
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
72
  requirements:
115
- - - ! '>='
73
+ - - ~>
116
74
  - !ruby/object:Gem::Version
117
- version: '0'
75
+ version: 2.14.0.rc1
118
76
  type: :development
119
77
  prerelease: false
120
78
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
79
  requirements:
123
- - - ! '>='
80
+ - - ~>
124
81
  - !ruby/object:Gem::Version
125
- version: '0'
82
+ version: 2.14.0.rc1
126
83
  - !ruby/object:Gem::Dependency
127
84
  name: pry-meta
128
85
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
86
  requirements:
131
- - - ! '>='
87
+ - - '>='
132
88
  - !ruby/object:Gem::Version
133
89
  version: '0'
134
90
  type: :development
135
91
  prerelease: false
136
92
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
93
  requirements:
139
- - - ! '>='
94
+ - - '>='
140
95
  - !ruby/object:Gem::Version
141
96
  version: '0'
142
97
  description: Paginate collections using SIZE+1 to determine if there is a next page.
@@ -149,24 +104,32 @@ extra_rdoc_files: []
149
104
  files:
150
105
  - .gitignore
151
106
  - .rspec
107
+ - .travis.yml
152
108
  - Gemfile
153
109
  - Gemfile.lock
154
- - README.rdoc
110
+ - README.md
155
111
  - Rakefile
112
+ - gemfiles/rails3.gemfile
113
+ - gemfiles/rails3.gemfile.lock
156
114
  - lib/paginate.rb
157
115
  - lib/paginate/action_controller.rb
158
116
  - lib/paginate/active_record.rb
159
117
  - lib/paginate/base.rb
160
118
  - lib/paginate/config.rb
119
+ - lib/paginate/extension.rb
161
120
  - lib/paginate/helper.rb
162
121
  - lib/paginate/renderer.rb
122
+ - lib/paginate/renderer/list.rb
123
+ - lib/paginate/renderer/more.rb
163
124
  - lib/paginate/version.rb
164
125
  - paginate.gemspec
165
126
  - spec/paginate/action_view_spec.rb
166
127
  - spec/paginate/activerecord_spec.rb
167
128
  - spec/paginate/base_spec.rb
168
129
  - spec/paginate/config_spec.rb
169
- - spec/paginate/renderer_spec.rb
130
+ - spec/paginate/renderer/base_spec.rb
131
+ - spec/paginate/renderer/list_spec.rb
132
+ - spec/paginate/renderer/more_spec.rb
170
133
  - spec/schema.rb
171
134
  - spec/spec_helper.rb
172
135
  - spec/support/controller.rb
@@ -179,27 +142,26 @@ files:
179
142
  - spec/support/views/application/_render.erb
180
143
  homepage: http://rubygems.org/gems/paginate
181
144
  licenses: []
145
+ metadata: {}
182
146
  post_install_message:
183
147
  rdoc_options: []
184
148
  require_paths:
185
149
  - lib
186
150
  required_ruby_version: !ruby/object:Gem::Requirement
187
- none: false
188
151
  requirements:
189
- - - ! '>='
152
+ - - '>='
190
153
  - !ruby/object:Gem::Version
191
154
  version: '0'
192
155
  required_rubygems_version: !ruby/object:Gem::Requirement
193
- none: false
194
156
  requirements:
195
- - - ! '>='
157
+ - - '>='
196
158
  - !ruby/object:Gem::Version
197
159
  version: '0'
198
160
  requirements: []
199
161
  rubyforge_project:
200
- rubygems_version: 1.8.24
162
+ rubygems_version: 2.0.3
201
163
  signing_key:
202
- specification_version: 3
164
+ specification_version: 4
203
165
  summary: Paginate collections using SIZE+1 to determine if there is a next page. Includes
204
166
  ActiveRecord and ActionView support.
205
167
  test_files: []