sinatra-pagin 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### sinatra-pagin - 0.0.2 / 2010-02-15
2
+
3
+ * Added a new helper method `href_for_pagin` to help facilitate creating pagination hrefs for use with pagin.
4
+
1
5
  ### sinatra-pagin - 0.0.1 / 2010-02-14
2
6
 
3
7
  * Initial Release
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/lib/sinatra/pagin.rb CHANGED
@@ -25,6 +25,20 @@ module Sinatra
25
25
 
26
26
  @page || 1
27
27
  end
28
+
29
+ def href_for_pagin(total_pages, direction = :next)
30
+ path_info = request.path_info.gsub(/\/$/, '') # clear off the last slash just in case
31
+ page_num = 1
32
+
33
+ case
34
+ when direction === :next
35
+ page_num = page+1 >= total_pages ? total_pages : page+1
36
+ when direction === :prev
37
+ page_num = page-1 <= 0 ? 1 : page-1
38
+ end
39
+
40
+ path_info+"/page/#{page_num}"
41
+ end
28
42
  end
29
43
  end
30
44
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sinatra-pagin}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Yung Hwa Kwon"]
data/spec/pagin_spec.rb CHANGED
@@ -140,7 +140,7 @@ describe 'Sinatra' do
140
140
  describe "Helpers" do
141
141
  include Sinatra::Pagin::Helpers
142
142
 
143
- describe "current_page" do
143
+ describe "page" do
144
144
  it "should return 1 if @page.nil?" do
145
145
  page.should == 1
146
146
  end
@@ -152,15 +152,95 @@ describe 'Sinatra' do
152
152
  end
153
153
  end
154
154
 
155
- it "should actually work inside the app" do
156
- app.get "/get/page/value/if" do
157
- "The page is #{page}"
155
+ context "within an actual app" do
156
+ before(:all) do
157
+ app.get "/get/page/value/if" do
158
+ "The page is #{page}"
159
+ end
158
160
  end
159
161
 
160
- get "/get/page/value/if/page/123"
161
- last_response.should be_ok
162
- last_response.body.should == "The page is 123"
163
- last_request.url.should == "http://example.org/get/page/value/if"
162
+ it "should actually work inside the app" do
163
+ get "/get/page/value/if/page/123"
164
+ last_response.should be_ok
165
+ last_response.body.should == "The page is 123"
166
+ last_request.url.should == "http://example.org/get/page/value/if"
167
+ end
168
+ end
169
+ end
170
+
171
+ describe "href_for_pagin" do
172
+ describe "" do
173
+ before(:each) do
174
+ stub!(:request)
175
+ request.stub!(:path_info).and_return '/2009/10'
176
+ end
177
+
178
+ it "should return a paginated uri based on the current request" do
179
+ page 2
180
+
181
+ next_page = href_for_pagin(3, :next)
182
+ prev_page = href_for_pagin(3, :prev)
183
+
184
+ next_page.should == "/2009/10/page/3"
185
+ prev_page.should == "/2009/10/page/1"
186
+ end
187
+
188
+ it "should return ../page/1 for :prev if page is 1" do
189
+ page 1
190
+ href_for_pagin(3, :prev).should == "/2009/10/page/1"
191
+ end
192
+
193
+ it "should return ../page/*total_pages for :next if page is the last page" do
194
+ page 3
195
+ href_for_pagin(3, :next).should == "/2009/10/page/3"
196
+ end
197
+ end
198
+
199
+ context "within an actual app" do
200
+ before(:all) do
201
+ app.get "/this/path/should/be/base" do
202
+ total_pages = 4
203
+ <<-HTML
204
+ <a href="#{href_for_pagin(total_pages, :prev)}">previous</a> |
205
+ <a href="#{href_for_pagin(total_pages, :next)}">next</a>
206
+ HTML
207
+ end
208
+ end
209
+
210
+ it "should return the proper hrefs given ../page/1" do
211
+ get "/this/path/should/be/base/page/1"
212
+ last_response.should be_ok
213
+ last_response.should have_selector 'a', :href => "/this/path/should/be/base/page/1" do |a|
214
+ a.inner_text.should == 'previous'
215
+ end
216
+ last_response.should have_selector 'a', :href => "/this/path/should/be/base/page/2" do |a|
217
+ a.inner_text.should == 'next'
218
+ end
219
+ end
220
+
221
+ [2, 3].each do |p|
222
+ it "should return the proper hrefs given ../page/#{p}" do
223
+ get "/this/path/should/be/base/page/#{p}"
224
+ last_response.should be_ok
225
+ last_response.should have_selector 'a', :href => "/this/path/should/be/base/page/#{p-1}" do |a|
226
+ a.inner_text.should == 'previous'
227
+ end
228
+ last_response.should have_selector 'a', :href => "/this/path/should/be/base/page/#{p+1}" do |a|
229
+ a.inner_text.should == 'next'
230
+ end
231
+ end
232
+ end
233
+
234
+ it "should return the proper hrefs given ../page/4" do
235
+ get "/this/path/should/be/base/page/4"
236
+ last_response.should be_ok
237
+ last_response.should have_selector 'a', :href => "/this/path/should/be/base/page/3" do |a|
238
+ a.inner_text.should == 'previous'
239
+ end
240
+ last_response.should have_selector 'a', :href => "/this/path/should/be/base/page/4" do |a|
241
+ a.inner_text.should == 'next'
242
+ end
243
+ end
164
244
  end
165
245
  end
166
246
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-pagin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yung Hwa Kwon