active_resource_pagination 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/active_resource_pagination.gemspec +1 -1
- data/lib/active_resource_pagination.rb +4 -5
- data/spec/active_resource_pagination_spec.rb +28 -11
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
@@ -11,15 +11,13 @@ module ActiveResource
|
|
11
11
|
# :params => {:year => 2010, :page => 1, :per_page => 20})
|
12
12
|
#
|
13
13
|
# To set default per_page value for all resources. you can do
|
14
|
-
# ActiveResource.per_page = 20 # do this in config/environment or initializers
|
14
|
+
# ActiveResource::Base.per_page = 20 # do this in config/environment or initializers
|
15
15
|
#
|
16
16
|
# or to implement per_page() in your resource class.
|
17
17
|
module Pagination
|
18
18
|
def self.included(base)
|
19
19
|
base.class_eval do
|
20
|
-
|
21
|
-
attr_accessor :per_page
|
22
|
-
end
|
20
|
+
cattr_accessor :per_page
|
23
21
|
end
|
24
22
|
base.extend ClassMethods
|
25
23
|
end
|
@@ -36,11 +34,12 @@ module ActiveResource
|
|
36
34
|
def paginate(*args)
|
37
35
|
options = args.last || {}
|
38
36
|
options = options[:params] || options
|
37
|
+
options = options.reject{|k, v| v.blank?}
|
39
38
|
options = {:page => 1, :per_page => per_page}.merge(options)
|
40
39
|
page = options[:page]
|
41
40
|
per_page = options[:per_page]
|
42
41
|
|
43
|
-
arr = find(*args)
|
42
|
+
arr = find(*args) || []
|
44
43
|
total_entries = options[:total_entries] || arr.size
|
45
44
|
WillPaginate::Collection.create(page, per_page, total_entries) do |pager|
|
46
45
|
if arr.size > per_page
|
@@ -1,6 +1,34 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
describe ActiveResource::Pagination do
|
4
|
+
describe "##per_page" do
|
5
|
+
it "should config per_page" do
|
6
|
+
ActiveResource::Base.per_page.should be_nil
|
7
|
+
ActiveResource::Base.per_page = 3
|
8
|
+
ActiveResource::Base.per_page.should == 3
|
9
|
+
|
10
|
+
class MySrc < ActiveResource::Base; end
|
11
|
+
MySrc.per_page.should == 3
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should override per_page in method" do
|
15
|
+
class Something < ActiveResource::Base
|
16
|
+
def self.per_page
|
17
|
+
2
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Something.per_page.should == 2
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should override per_page ad hoc" do
|
25
|
+
class Comment < ActiveResource::Base
|
26
|
+
end
|
27
|
+
Comment.per_page = 5
|
28
|
+
Comment.per_page.should == 5
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
4
32
|
describe "##paginate" do
|
5
33
|
before(:all) do
|
6
34
|
class Article < ActiveResource::Base
|
@@ -24,17 +52,6 @@ describe ActiveResource::Pagination do
|
|
24
52
|
ActiveResource::Base.should respond_to(:paginate)
|
25
53
|
end
|
26
54
|
|
27
|
-
it "should override per_page in method" do
|
28
|
-
Article.per_page.should == 2
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should override per_page ad hoc" do
|
32
|
-
class Comment < ActiveResource::Base
|
33
|
-
end
|
34
|
-
Comment.per_page = 5
|
35
|
-
Comment.per_page.should == 5
|
36
|
-
end
|
37
|
-
|
38
55
|
describe "when backend does not paginate" do
|
39
56
|
before(:each) do
|
40
57
|
Article.should_receive(:find).and_return(@articles)
|