paginate 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []