paginate-responder 1.1.1 → 1.2.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.
data/.gitignore CHANGED
@@ -1,8 +1,11 @@
1
1
  *.gem
2
2
  *.rbc
3
+ *.iml
3
4
  .bundle
4
5
  .config
5
6
  .yardoc
7
+ .idea
8
+ .rvmrc
6
9
  Gemfile.lock
7
10
  InstalledFiles
8
11
  _yardoc
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.0.0
4
+ - jruby
3
5
  - 1.9.3
4
- - 1.8.7
data/Gemfile CHANGED
@@ -2,14 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in paginate-responder.gemspec
4
4
  gemspec
5
-
6
- group :development do
7
- gem 'minitest'
8
- gem 'rake'
9
- gem 'rack-link_headers'
10
- end
11
-
12
- group :test do
13
- gem 'will_paginate'
14
- gem 'actionpack'
15
- end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Paginate::Responder [![Build Status](https://travis-ci.org/jgraichen/paginate-responder.png?branch=master)](https://travis-ci.org/jgraichen/paginate-responder)
1
+ # Paginate::Responder [![Build Status](https://travis-ci.org/jgraichen/paginate-responder.png?branch=master)](https://travis-ci.org/jgraichen/paginate-responder) [![Code Climate](https://codeclimate.com/github/jgraichen/paginate-responder.png)](https://codeclimate.com/github/jgraichen/paginate-responder)
2
2
 
3
3
  A Rails pagination responder with link header support.
4
4
 
@@ -16,8 +16,9 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install paginate-responder
18
18
 
19
- You will also need a pagination gem like
20
- [will_paginate](mislav/will_paginate).
19
+ You will also need a pagination gem. `PaginateResponder` comes with adapters for
20
+ * [will_paginate](https://github.com/mislav/will_paginate) and
21
+ * [kaminari](https://github.com/amatsuda/kaminari).
21
22
 
22
23
  ## Usage
23
24
 
@@ -56,14 +57,6 @@ Also a `X-Total-Pages` header will be added with the total
56
57
  number of pages if available. This allows applications
57
58
  to display a progress bar or similar while fetching pages.
58
59
 
59
- `PaginateResponder` should work with any pagination gem that
60
- adds a `paginate` method to collections. Tests run with
61
- [will_paginate](mislav/will_paginate).
62
-
63
- The `total_pages` method on the collection will be used as
64
- total page count. If not total page method is present or
65
- nil is returned some link header may be missing.
66
-
67
60
  ## TODOs
68
61
 
69
62
  * Documentation
data/Rakefile CHANGED
@@ -8,3 +8,4 @@ Rake::TestTask.new do |t|
8
8
  end
9
9
 
10
10
  task :default => :test
11
+ task :spec => :test
@@ -0,0 +1,40 @@
1
+ module PaginateResponder::Adapter
2
+ class Base
3
+ attr_reader :resource
4
+
5
+ def initialize(resource)
6
+ @resource = resource
7
+ end
8
+
9
+ def paginate!(opts)
10
+ @resource = paginate(opts)
11
+ end
12
+
13
+ # If pagination for current resource is supported.
14
+ #
15
+ def suitable?
16
+ false
17
+ end
18
+
19
+ # Return paginated resource.
20
+ # Option hash will contain at least <tt>:per_page</tt>
21
+ # and <tt>:page</tt>.
22
+ #
23
+ def paginate(opts)
24
+ resource
25
+ end
26
+
27
+ # Return number of total pages for current resource.
28
+ #
29
+ def total_pages
30
+ nil
31
+ end
32
+
33
+ # Return default values for items per page and maximum
34
+ # items per page.
35
+ #
36
+ def defaults
37
+ { :per_page => 50, :max_per_page => 100 }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,26 @@
1
+ module PaginateResponder::Adapter
2
+
3
+ # Pagination adapter for kaminari.
4
+ #
5
+ class KaminariAdapter < Base
6
+
7
+ def suitable?
8
+ resource.respond_to?(:page)
9
+ end
10
+
11
+ def paginate(opts)
12
+ resource.page(opts[:page]).per(opts[:per_page])
13
+ end
14
+
15
+ def defaults
16
+ {
17
+ :per_page => Kaminari.config.default_per_page,
18
+ :max_per_page => Kaminari.config.max_per_page
19
+ }
20
+ end
21
+
22
+ def total_pages
23
+ resource.num_pages if resource.respond_to? :num_pages
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ module PaginateResponder::Adapter
2
+
3
+ # Pagination adapter for will_paginate.
4
+ #
5
+ class PaginateAdapter < Base
6
+
7
+ def suitable?
8
+ resource.respond_to?(:paginate)
9
+ end
10
+
11
+ def paginate(opts)
12
+ resource.paginate :page => opts[:page], :per_page => opts[:per_page]
13
+ end
14
+
15
+ def defaults
16
+ { :per_page => 50, :max_per_page => 50 }
17
+ end
18
+
19
+ def total_pages
20
+ resource.total_pages if resource.respond_to? :total_pages
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,81 @@
1
+ module PaginateResponder
2
+ class Paginator
3
+ attr_reader :responder, :adapter, :resource
4
+
5
+ def initialize(responder)
6
+ @responder = responder
7
+ @resource = responder.resource
8
+ @adapter = find_adapter
9
+ end
10
+
11
+ def find_adapter
12
+ return controller.pagination_adapter(resource) if controller.respond_to? :pagination_adapter
13
+
14
+ Adapter::Base.subclasses.each do |adapter_class|
15
+ begin
16
+ adapter_class.new(resource).tap do |adapter|
17
+ return adapter if adapter.suitable?
18
+ end
19
+ rescue
20
+ next
21
+ end
22
+ end
23
+ Adapter::Base.new(resource)
24
+ end
25
+
26
+ def request; responder.request end
27
+ def response; controller.response end
28
+ def controller; responder.controller end
29
+
30
+ def paginate!
31
+ resource!
32
+ headers!
33
+
34
+ resource
35
+ end
36
+
37
+ def headers!
38
+ link! 'first', 1
39
+ link! 'prev', page - 1 if page > 1
40
+ link! 'next', page + 1 if total_pages && page < total_pages
41
+ link! 'last', total_pages if total_pages
42
+
43
+ response.headers["X-Total-Pages"] = total_pages.to_s if total_pages
44
+ end
45
+
46
+ def link!(rel, page)
47
+ response.link(controller.url_for(request.params.merge(:page => page)), :rel => rel)
48
+ end
49
+
50
+ def resource!
51
+ @resource = @adapter.paginate! :page => page, :per_page => per_page
52
+ end
53
+
54
+ def page
55
+ @page ||= controller.page.try(:to_i) if controller.respond_to? :page
56
+ @page ||= controller.params[:page].try(:to_i)
57
+ @page ||= 1
58
+ rescue
59
+ 1
60
+ end
61
+
62
+ def per_page
63
+ @per_page ||= controller.per_page.try(:to_i) if controller.respond_to? :per_page
64
+ @per_page ||= controller.params[:per_page].try(:to_i)
65
+ @per_page ||= @adapter.defaults[:per_page].try(:to_i)
66
+ @per_page = [[1, @per_page].max, max_per_page].min
67
+ rescue
68
+ max_per_page
69
+ end
70
+
71
+ def max_per_page
72
+ @max_per_page ||= controller.max_per_page.try(:to_i) if controller.respond_to? :max_per_page
73
+ @max_per_page ||= @adapter.defaults[:max_per_page].try(:to_i)
74
+ @max_per_page ||= 50
75
+ end
76
+
77
+ def total_pages
78
+ @adapter.total_pages
79
+ end
80
+ end
81
+ end
@@ -1,8 +1,8 @@
1
1
  module PaginateResponder
2
2
  module VERSION
3
3
  MAJOR = 1
4
- MINOR = 1
5
- PATCH = 1
4
+ MINOR = 2
5
+ PATCH = 0
6
6
  STAGE = nil
7
7
 
8
8
  def self.to_s
@@ -6,4 +6,13 @@ end
6
6
 
7
7
  module PaginateResponder
8
8
  autoload :VERSION, 'paginate-responder/version'
9
+ autoload :Paginator, 'paginate-responder/paginator'
10
+
11
+ module Adapter
12
+ autoload :Base, 'paginate-responder/adapter/base'
13
+ autoload :Internal, 'paginate-responder/adapter/internal'
14
+ end
9
15
  end
16
+
17
+ require 'paginate-responder/adapter/paginate_adapter'
18
+ require 'paginate-responder/adapter/kaminari_adapter'
@@ -1,46 +1,12 @@
1
-
2
1
  module Responders
2
+
3
3
  module PaginateResponder
4
- def to_format
5
- if get? && resource.respond_to?(:paginate)
6
- @resource = resource.paginate :page => self.page, :per_page => self.per_page
7
4
 
8
- controller.response.link(controller.url_for(request.params.merge(:page => 1)), :rel => "first")
9
- controller.response.link(controller.url_for(request.params.merge(:page => page - 1)), :rel => "prev") if page > 1
10
- controller.response.link(controller.url_for(request.params.merge(:page => page + 1)), :rel => "next") if total_pages && page < total_pages
11
- controller.response.link(controller.url_for(request.params.merge(:page => total_pages)), :rel => "last") if total_pages
12
- controller.response.headers["X-Total-Pages"] = total_pages.to_s if total_pages
5
+ def to_format
6
+ if get?
7
+ @resource = ::PaginateResponder::Paginator.new(self).paginate!
13
8
  end
14
9
  super
15
10
  end
16
-
17
- def page
18
- @page ||= controller.page if controller.respond_to? :page
19
- @page ||= controller.params[:page].try(:to_i)
20
- @page ||= 1
21
- @page
22
- rescue
23
- 1
24
- end
25
-
26
- def total_pages
27
- @total_pages ||= resource.total_pages if resource.respond_to? :total_pages
28
- @total_pages
29
- end
30
-
31
- def per_page
32
- @per_page ||= controller.per_page if controller.respond_to? :per_page
33
- @per_page ||= controller.params[:per_page].try(:to_i)
34
- @per_page = [[1, @per_page].max, max_per_page].min
35
- @per_page
36
- rescue
37
- max_per_page
38
- end
39
-
40
- def max_per_page
41
- @max_per_page ||= controller.max_per_page if controller.respond_to? :max_per_page
42
- @max_per_page ||= 50
43
- @max_per_page
44
- end
45
11
  end
46
12
  end
@@ -6,8 +6,8 @@ require 'paginate-responder/version'
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "paginate-responder"
8
8
  gem.version = PaginateResponder::VERSION
9
- gem.authors = ["Jan Graichen"]
10
- gem.email = ["jg@altimos.de"]
9
+ gem.authors = ['Jan Graichen']
10
+ gem.email = ['jg@altimos.de']
11
11
  gem.description = %q{A Rails pagination responder with link header support.}
12
12
  gem.summary = %q{A Rails pagination responder with link header support.}
13
13
  gem.homepage = ""
@@ -15,7 +15,14 @@ Gem::Specification.new do |gem|
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ["lib"]
18
+ gem.require_paths = ['lib']
19
19
 
20
20
  gem.add_dependency 'rack-link_headers', '>= 2.2'
21
+
22
+ gem.add_development_dependency 'rake'
23
+ gem.add_development_dependency 'actionpack', '>= 3.2.0'
24
+ gem.add_development_dependency 'minitest'
25
+ gem.add_development_dependency 'minitest-reporters', '>= 0.8.0'
26
+ gem.add_development_dependency 'will_paginate'
27
+ gem.add_development_dependency 'kaminari'
21
28
  end
@@ -0,0 +1,23 @@
1
+ require 'test_helper.rb'
2
+ require 'pagination_tests'
3
+
4
+ require 'kaminari/config'
5
+ require 'kaminari/helpers/paginator'
6
+ require 'kaminari/models/page_scope_methods'
7
+ require 'kaminari/models/configuration_methods'
8
+ require 'kaminari/models/array_extension'
9
+
10
+ Kaminari.configure do |config|
11
+ config.default_per_page = 50
12
+ config.max_per_page = 50
13
+ end
14
+
15
+ class KaminariResponderTest < ActionController::TestCase
16
+ tests PaginateController
17
+
18
+ def setup
19
+ @controller.resource = Kaminari.paginate_array(resource)
20
+ end
21
+
22
+ include PaginationTests
23
+ end
@@ -1,140 +1,14 @@
1
1
  require 'test_helper.rb'
2
+ require 'pagination_tests'
3
+
4
+ require 'will_paginate/array'
2
5
 
3
6
  class PaginateResponderTest < ActionController::TestCase
4
7
  tests PaginateController
5
8
 
6
- def json; JSON[@response.body] end
7
-
8
- def test_pagination
9
- get :index, :format => :json
10
-
11
- assert_equal 50, json.size
12
- assert_equal ('AA'..'zz').to_a[0..49], json
13
- end
14
-
15
- def test_pagination_page_2
16
- get :index, :format => :json, :page => 2
17
-
18
- assert_equal 50, json.size
19
- assert_equal ('AA'..'zz').to_a[50..99], json
20
- end
21
-
22
- def test_pagination_per_page
23
- get :index, :format => :json, :page => 1, :per_page => 10
24
-
25
- assert_equal 10, json.size
26
- assert_equal ('AA'..'zz').to_a[0..9], json
9
+ def setup
10
+ @controller.resource = resource
27
11
  end
28
12
 
29
- def test_pagination_per_page_page_2
30
- get :index, :format => :json, :page => 2, :per_page => 10
31
-
32
- assert_equal 10, json.size
33
- assert_equal ('AA'..'zz').to_a[10..19], json
34
- end
35
-
36
- def test_headers
37
- get :index, :format => :json
38
-
39
- assert_equal 3, response.links.size
40
-
41
- assert_equal "first", response.links[0][:params][:rel]
42
- assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
43
-
44
- assert_equal "next", response.links[1][:params][:rel]
45
- assert_equal "http://test.host/index.json?page=2", response.links[1][:url]
46
-
47
- assert_equal "last", response.links[2][:params][:rel]
48
- assert_equal "http://test.host/index.json?page=14", response.links[2][:url]
49
- end
50
-
51
- def test_headers_page_2
52
- get :index, :format => :json, :page => 2
53
-
54
- assert_equal 4, response.links.size
55
-
56
- assert_equal "first", response.links[0][:params][:rel]
57
- assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
58
-
59
- assert_equal "prev", response.links[1][:params][:rel]
60
- assert_equal "http://test.host/index.json?page=1", response.links[1][:url]
61
-
62
- assert_equal "next", response.links[2][:params][:rel]
63
- assert_equal "http://test.host/index.json?page=3", response.links[2][:url]
64
-
65
- assert_equal "last", response.links[3][:params][:rel]
66
- assert_equal "http://test.host/index.json?page=14", response.links[3][:url]
67
- end
68
-
69
- def test_headers_page_5
70
- get :index, :format => :json, :page => 5
71
-
72
- assert_equal 4, response.links.size
73
-
74
- assert_equal "first", response.links[0][:params][:rel]
75
- assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
76
-
77
- assert_equal "prev", response.links[1][:params][:rel]
78
- assert_equal "http://test.host/index.json?page=4", response.links[1][:url]
79
-
80
- assert_equal "next", response.links[2][:params][:rel]
81
- assert_equal "http://test.host/index.json?page=6", response.links[2][:url]
82
-
83
- assert_equal "last", response.links[3][:params][:rel]
84
- assert_equal "http://test.host/index.json?page=14", response.links[3][:url]
85
- end
86
-
87
- def test_headers_last_page
88
- get :index, :format => :json, :page => 14
89
-
90
- assert_equal 3, response.links.size
91
-
92
- assert_equal "first", response.links[0][:params][:rel]
93
- assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
94
-
95
- assert_equal "prev", response.links[1][:params][:rel]
96
- assert_equal "http://test.host/index.json?page=13", response.links[1][:url]
97
-
98
- assert_equal "last", response.links[2][:params][:rel]
99
- assert_equal "http://test.host/index.json?page=14", response.links[2][:url]
100
- end
101
-
102
- def test_headers_page_before_last_page
103
- get :index, :format => :json, :page => 13
104
-
105
- assert_equal 4, response.links.size
106
-
107
- assert_equal "first", response.links[0][:params][:rel]
108
- assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
109
-
110
- assert_equal "prev", response.links[1][:params][:rel]
111
- assert_equal "http://test.host/index.json?page=12", response.links[1][:url]
112
-
113
- assert_equal "next", response.links[2][:params][:rel]
114
- assert_equal "http://test.host/index.json?page=14", response.links[2][:url]
115
-
116
- assert_equal "last", response.links[3][:params][:rel]
117
- assert_equal "http://test.host/index.json?page=14", response.links[3][:url]
118
- end
119
-
120
- def test_headers_per_page
121
- get :index, :format => :json, :page => 1, :per_page => 10
122
-
123
- assert_equal 3, response.links.size
124
-
125
- assert_equal "first", response.links[0][:params][:rel]
126
- assert_equal "http://test.host/index.json?page=1&per_page=10", response.links[0][:url]
127
-
128
- assert_equal "next", response.links[1][:params][:rel]
129
- assert_equal "http://test.host/index.json?page=2&per_page=10", response.links[1][:url]
130
-
131
- assert_equal "last", response.links[2][:params][:rel]
132
- assert_equal "http://test.host/index.json?page=68&per_page=10", response.links[2][:url]
133
- end
134
-
135
- def test_headers_total_pages
136
- get :index, :format => :json
137
-
138
- assert_equal "14", response.headers["X-Total-Pages"]
139
- end
13
+ include PaginationTests
140
14
  end
@@ -0,0 +1,137 @@
1
+ module PaginationTests
2
+ def json; JSON[@response.body] end
3
+ def resource; ('AA'..'zz').to_a end
4
+
5
+ def test_pagination
6
+ get :index, :format => :json
7
+
8
+ assert_equal 50, json.size
9
+ assert_equal ('AA'..'zz').to_a[0..49], json
10
+ end
11
+
12
+ def test_pagination_page_2
13
+ get :index, :format => :json, :page => 2
14
+
15
+ assert_equal 50, json.size
16
+ assert_equal ('AA'..'zz').to_a[50..99], json
17
+ end
18
+
19
+ def test_pagination_per_page
20
+ get :index, :format => :json, :page => 1, :per_page => 10
21
+
22
+ assert_equal 10, json.size
23
+ assert_equal ('AA'..'zz').to_a[0..9], json
24
+ end
25
+
26
+ def test_pagination_per_page_2
27
+ get :index, :format => :json, :page => 2, :per_page => 10
28
+
29
+ assert_equal 10, json.size
30
+ assert_equal ('AA'..'zz').to_a[10..19], json
31
+ end
32
+
33
+ def test_headers
34
+ get :index, :format => :json
35
+
36
+ assert_equal 3, response.links.size
37
+
38
+ assert_equal "first", response.links[0][:params][:rel]
39
+ assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
40
+
41
+ assert_equal "next", response.links[1][:params][:rel]
42
+ assert_equal "http://test.host/index.json?page=2", response.links[1][:url]
43
+
44
+ assert_equal "last", response.links[2][:params][:rel]
45
+ assert_equal "http://test.host/index.json?page=14", response.links[2][:url]
46
+ end
47
+
48
+ def test_headers_page_2
49
+ get :index, :format => :json, :page => 2
50
+
51
+ assert_equal 4, response.links.size
52
+
53
+ assert_equal "first", response.links[0][:params][:rel]
54
+ assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
55
+
56
+ assert_equal "prev", response.links[1][:params][:rel]
57
+ assert_equal "http://test.host/index.json?page=1", response.links[1][:url]
58
+
59
+ assert_equal "next", response.links[2][:params][:rel]
60
+ assert_equal "http://test.host/index.json?page=3", response.links[2][:url]
61
+
62
+ assert_equal "last", response.links[3][:params][:rel]
63
+ assert_equal "http://test.host/index.json?page=14", response.links[3][:url]
64
+ end
65
+
66
+ def test_headers_page_5
67
+ get :index, :format => :json, :page => 5
68
+
69
+ assert_equal 4, response.links.size
70
+
71
+ assert_equal "first", response.links[0][:params][:rel]
72
+ assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
73
+
74
+ assert_equal "prev", response.links[1][:params][:rel]
75
+ assert_equal "http://test.host/index.json?page=4", response.links[1][:url]
76
+
77
+ assert_equal "next", response.links[2][:params][:rel]
78
+ assert_equal "http://test.host/index.json?page=6", response.links[2][:url]
79
+
80
+ assert_equal "last", response.links[3][:params][:rel]
81
+ assert_equal "http://test.host/index.json?page=14", response.links[3][:url]
82
+ end
83
+
84
+ def test_headers_last_page
85
+ get :index, :format => :json, :page => 14
86
+
87
+ assert_equal 3, response.links.size
88
+
89
+ assert_equal "first", response.links[0][:params][:rel]
90
+ assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
91
+
92
+ assert_equal "prev", response.links[1][:params][:rel]
93
+ assert_equal "http://test.host/index.json?page=13", response.links[1][:url]
94
+
95
+ assert_equal "last", response.links[2][:params][:rel]
96
+ assert_equal "http://test.host/index.json?page=14", response.links[2][:url]
97
+ end
98
+
99
+ def test_headers_page_before_last_page
100
+ get :index, :format => :json, :page => 13
101
+
102
+ assert_equal 4, response.links.size
103
+
104
+ assert_equal "first", response.links[0][:params][:rel]
105
+ assert_equal "http://test.host/index.json?page=1", response.links[0][:url]
106
+
107
+ assert_equal "prev", response.links[1][:params][:rel]
108
+ assert_equal "http://test.host/index.json?page=12", response.links[1][:url]
109
+
110
+ assert_equal "next", response.links[2][:params][:rel]
111
+ assert_equal "http://test.host/index.json?page=14", response.links[2][:url]
112
+
113
+ assert_equal "last", response.links[3][:params][:rel]
114
+ assert_equal "http://test.host/index.json?page=14", response.links[3][:url]
115
+ end
116
+
117
+ def test_headers_per_page
118
+ get :index, :format => :json, :page => 1, :per_page => 10
119
+
120
+ assert_equal 3, response.links.size
121
+
122
+ assert_equal "first", response.links[0][:params][:rel]
123
+ assert_equal "http://test.host/index.json?page=1&per_page=10", response.links[0][:url]
124
+
125
+ assert_equal "next", response.links[1][:params][:rel]
126
+ assert_equal "http://test.host/index.json?page=2&per_page=10", response.links[1][:url]
127
+
128
+ assert_equal "last", response.links[2][:params][:rel]
129
+ assert_equal "http://test.host/index.json?page=68&per_page=10", response.links[2][:url]
130
+ end
131
+
132
+ def test_headers_total_pages
133
+ get :index, :format => :json
134
+
135
+ assert_equal "14", response.headers["X-Total-Pages"]
136
+ end
137
+ end
data/test/test_helper.rb CHANGED
@@ -8,7 +8,8 @@ ENV["RAILS_ENV"] = "test"
8
8
 
9
9
  require 'active_support'
10
10
  require 'action_controller'
11
- require 'will_paginate/array'
11
+ require 'minitest/reporters'
12
+ MiniTest::Reporters.use!
12
13
 
13
14
  require 'paginate-responder'
14
15
 
@@ -23,17 +24,17 @@ class ActiveSupport::TestCase
23
24
  end
24
25
  end
25
26
 
26
- class PaginationResponder < ActionController::Responder
27
+ class TestResponder < ActionController::Responder
27
28
  include Responders::PaginateResponder
28
29
  end
29
30
 
30
31
  class PaginateController < ActionController::Base
32
+ attr_accessor :resource
31
33
  include Responders::Routes.url_helpers
32
-
33
- self.responder = PaginationResponder
34
+ self.responder = TestResponder
34
35
  respond_to :json
35
36
 
36
37
  def index
37
- respond_with ('AA'..'zz').to_a
38
+ respond_with resource
38
39
  end
39
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paginate-responder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-18 00:00:00.000000000 Z
12
+ date: 2013-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack-link_headers
@@ -27,6 +27,102 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '2.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: actionpack
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 3.2.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !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: minitest-reporters
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 0.8.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.8.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: will_paginate
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: kaminari
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
30
126
  description: A Rails pagination responder with link header support.
31
127
  email:
32
128
  - jg@altimos.de
@@ -41,10 +137,16 @@ files:
41
137
  - README.md
42
138
  - Rakefile
43
139
  - lib/paginate-responder.rb
140
+ - lib/paginate-responder/adapter/base.rb
141
+ - lib/paginate-responder/adapter/kaminari_adapter.rb
142
+ - lib/paginate-responder/adapter/paginate_adapter.rb
143
+ - lib/paginate-responder/paginator.rb
44
144
  - lib/paginate-responder/version.rb
45
145
  - lib/responders/paginate_responder.rb
46
146
  - paginate-responder.gemspec
147
+ - test/kaminari_responder_test.rb
47
148
  - test/paginate_responder_test.rb
149
+ - test/pagination_tests.rb
48
150
  - test/test_helper.rb
49
151
  homepage: ''
50
152
  licenses: []
@@ -58,24 +160,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
160
  - - ! '>='
59
161
  - !ruby/object:Gem::Version
60
162
  version: '0'
61
- segments:
62
- - 0
63
- hash: 3362821720286290426
64
163
  required_rubygems_version: !ruby/object:Gem::Requirement
65
164
  none: false
66
165
  requirements:
67
166
  - - ! '>='
68
167
  - !ruby/object:Gem::Version
69
168
  version: '0'
70
- segments:
71
- - 0
72
- hash: 3362821720286290426
73
169
  requirements: []
74
170
  rubyforge_project:
75
- rubygems_version: 1.8.24
171
+ rubygems_version: 1.8.25
76
172
  signing_key:
77
173
  specification_version: 3
78
174
  summary: A Rails pagination responder with link header support.
79
175
  test_files:
176
+ - test/kaminari_responder_test.rb
80
177
  - test/paginate_responder_test.rb
178
+ - test/pagination_tests.rb
81
179
  - test/test_helper.rb