jm81-paginate 0.2.1 → 0.2.2
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.
- checksums.yaml +15 -0
- data/Rakefile +7 -33
- data/lib/helpers/shared.rb +7 -7
- data/lib/jm81-paginate/version.rb +1 -1
- metadata +37 -88
- data/LICENSE +0 -20
- data/TODO +0 -23
- data/jm81-paginate.gemspec +0 -84
- data/spec/fixtures/ar.rb +0 -7
- data/spec/fixtures/dm.rb +0 -13
- data/spec/helpers/merb_spec.rb +0 -31
- data/spec/helpers/rails_spec.rb +0 -31
- data/spec/helpers/shared_spec.rb +0 -95
- data/spec/paginate/ar_spec.rb +0 -55
- data/spec/paginate/config_spec.rb +0 -31
- data/spec/paginate/dm_spec.rb +0 -48
- data/spec/paginate/simple_spec.rb +0 -27
- data/spec/paginators/orm_spec.rb +0 -49
- data/spec/paginators/simple_spec.rb +0 -37
- data/spec/shared.rb +0 -155
- data/spec/spec.opts +0 -6
- data/spec/spec_helper.rb +0 -5
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NmY5OTAxYTBhN2U0NDA3MDJhNDFmNjgwMTRiYTg1YWFmYzBiMTU4Yg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NGNhOTUzYTllYzdiM2Q4NWM0Y2QzMGE2OGJiZjFiNjQyNTcwYTJlMQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzBjMTk1NTllOTdkMjBmMmVjMDZhMjNmYzIwOGMwNmNhYzNmOTA1ZDA4ODlj
|
10
|
+
ZDM2MGIxMjllMjljNDA2ZDQyNGM0MTQwNTNjYjk4NjAyZTc0NTJlMTc1ODgz
|
11
|
+
NDYzMjY3NjIxMzAxY2Y4NTc0Y2E5MTI2MGZmY2E5OGM0ZjNjOWY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NWJkZDM0MTI4NDE3ZGRjMjY2MWVhMGE1NWZkZGMwODMyNjI5MmFjYjg0ZDQy
|
14
|
+
NDJjMDljMzdlZjlkMGExZmE1NTg5MTU0YTE1MDgxMzlmZWU4NzY3ODk2OGFi
|
15
|
+
NDM1MjBkNWFhNmM0OGJiY2E1MzRjM2RiZGIwNjk2YTE4MzU0MDc=
|
data/Rakefile
CHANGED
@@ -1,27 +1,11 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rdoc/task'
|
4
|
+
require 'rubygems'
|
3
5
|
require File.join(File.dirname(__FILE__), 'lib', 'jm81-paginate', 'version')
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
Jeweler::Tasks.new do |gem|
|
8
|
-
gem.name = "jm81-paginate"
|
9
|
-
gem.version = Paginate::VERSION.dup
|
10
|
-
gem.summary = "Pagination for DataMapper, ActiveRecord, and Array"
|
11
|
-
gem.description = <<EOF
|
12
|
-
This paginate library assists in paginating collections and results of database
|
13
|
-
queries. It is particularly designed for use with DataMapper and ActiveRecord,
|
14
|
-
and for the Merb and Rails frameworks, but can be used in many other situations.
|
15
|
-
EOF
|
16
|
-
gem.email = "jmorgan@morgancreative.net"
|
17
|
-
gem.homepage = "http://github.com/jm81/paginate"
|
18
|
-
gem.authors = ["Jared Morgan"]
|
19
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
20
|
-
end
|
21
|
-
Jeweler::GemcutterTasks.new
|
22
|
-
rescue LoadError
|
23
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
24
|
-
end
|
7
|
+
desc 'Default: run unit tests.'
|
8
|
+
task :default => :specs
|
25
9
|
|
26
10
|
require 'spec/rake/spectask'
|
27
11
|
Spec::Rake::SpecTask.new(:spec) do |spec|
|
@@ -35,20 +19,10 @@ Spec::Rake::SpecTask.new(:rcov) do |spec|
|
|
35
19
|
spec.rcov = true
|
36
20
|
end
|
37
21
|
|
38
|
-
|
39
|
-
task :default => :spec
|
40
|
-
|
41
|
-
require 'rake/rdoctask'
|
42
22
|
Rake::RDocTask.new do |rdoc|
|
43
|
-
if File.exist?('VERSION.yml')
|
44
|
-
config = YAML.load(File.read('VERSION.yml'))
|
45
|
-
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
46
|
-
else
|
47
|
-
version = ""
|
48
|
-
end
|
49
|
-
|
50
23
|
rdoc.rdoc_dir = 'rdoc'
|
51
|
-
rdoc.title
|
24
|
+
rdoc.title = 'jm81-paginate'
|
25
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
52
26
|
rdoc.rdoc_files.include('README*')
|
53
27
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
28
|
end
|
data/lib/helpers/shared.rb
CHANGED
@@ -2,23 +2,23 @@ module Paginate
|
|
2
2
|
module Helpers
|
3
3
|
# Shared helper methods included in other Helper modules.
|
4
4
|
module Shared
|
5
|
-
# +page_set+ returns an Array of page numbers that can be used by a view
|
5
|
+
# +page_set+ returns an Array of page numbers that can be used by a view
|
6
6
|
# for displaying page links. It includes the first page, the current page,
|
7
7
|
# with up to +padding+ pages before and after, and the last page. If pages
|
8
8
|
# are skipped between any of these groups, 0 stands in for them, as an
|
9
9
|
# indicator to the view that, for example, elipses might be used here.
|
10
10
|
# For example:
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# page_set(3, 10, 3)
|
13
13
|
# => [1, 2, 3, 4, 5, 6, 0, 10] TODO test this in particular
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# The 0 at index 6 is an indication that there are skipped pages.
|
16
16
|
def page_set(current_page, pages, padding = 3)
|
17
|
-
|
17
|
+
|
18
18
|
# Determine first and last page in group around current page
|
19
19
|
first = [1, current_page - padding].max
|
20
20
|
last = [pages, current_page + padding].min
|
21
|
-
|
21
|
+
|
22
22
|
# Determine if an additional "First page" is needed and whether any
|
23
23
|
# pages are skipped between it and the first around the current page
|
24
24
|
leader = case first
|
@@ -34,7 +34,7 @@ module Paginate
|
|
34
34
|
when pages - 1 then [pages] # Last needed, but none skipped
|
35
35
|
else [0, pages] # Last needed, some skipped
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
# Join Arrays together
|
39
39
|
leader + (first..last).to_a + footer
|
40
40
|
end
|
@@ -46,7 +46,7 @@ module Paginate
|
|
46
46
|
# in the query string to be used in the page link.
|
47
47
|
def url_for_pagination(page, path = request.path, q = request.query_string)
|
48
48
|
# Remove any current reference to page in the query string
|
49
|
-
q.to_s.gsub
|
49
|
+
q = q.to_s.gsub(/page=(-?[\d]+)(&?)/, '')
|
50
50
|
# Assemble new link
|
51
51
|
link = "#{path}?page=#{page}&#{q}"
|
52
52
|
link = link[0..-2] if link[-1..-1] == '&' # Strip trailing ampersand
|
metadata
CHANGED
@@ -1,113 +1,62 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jm81-paginate
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease: false
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 1
|
10
|
-
version: 0.2.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.2
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jared Morgan
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2010-12-02 00:00:00 -06:00
|
19
|
-
default_executable:
|
11
|
+
date: 2014-07-01 00:00:00.000000000 Z
|
20
12
|
dependencies: []
|
13
|
+
description: ! 'This paginate library assists in paginating collections and results
|
14
|
+
of database
|
15
|
+
|
16
|
+
queries. It is particularly designed for use with DataMapper and ActiveRecord,
|
21
17
|
|
22
|
-
description: |
|
23
|
-
This paginate library assists in paginating collections and results of database
|
24
|
-
queries. It is particularly designed for use with DataMapper and ActiveRecord,
|
25
18
|
and for the Merb and Rails frameworks, but can be used in many other situations.
|
26
19
|
|
27
|
-
|
20
|
+
'
|
21
|
+
email:
|
22
|
+
- jmorgan@morgancreative.net
|
28
23
|
executables: []
|
29
|
-
|
30
24
|
extensions: []
|
31
|
-
|
32
|
-
|
33
|
-
- LICENSE
|
34
|
-
- README.md
|
35
|
-
- TODO
|
36
|
-
files:
|
37
|
-
- LICENSE
|
38
|
-
- README.md
|
39
|
-
- Rakefile
|
40
|
-
- TODO
|
41
|
-
- jm81-paginate.gemspec
|
25
|
+
extra_rdoc_files: []
|
26
|
+
files:
|
42
27
|
- lib/helpers/merb.rb
|
43
28
|
- lib/helpers/rails.rb
|
44
29
|
- lib/helpers/shared.rb
|
45
|
-
- lib/jm81-paginate.rb
|
46
|
-
- lib/jm81-paginate/version.rb
|
47
|
-
- lib/paginate/ar.rb
|
48
|
-
- lib/paginate/dm.rb
|
49
|
-
- lib/paginate/simple.rb
|
50
|
-
- lib/paginators/orm.rb
|
51
30
|
- lib/paginators/simple.rb
|
52
|
-
-
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
-
|
60
|
-
- spec/paginate/simple_spec.rb
|
61
|
-
- spec/paginators/orm_spec.rb
|
62
|
-
- spec/paginators/simple_spec.rb
|
63
|
-
- spec/shared.rb
|
64
|
-
- spec/spec.opts
|
65
|
-
- spec/spec_helper.rb
|
66
|
-
has_rdoc: true
|
31
|
+
- lib/paginators/orm.rb
|
32
|
+
- lib/paginate/simple.rb
|
33
|
+
- lib/paginate/dm.rb
|
34
|
+
- lib/paginate/ar.rb
|
35
|
+
- lib/jm81-paginate/version.rb
|
36
|
+
- lib/jm81-paginate.rb
|
37
|
+
- Rakefile
|
38
|
+
- README.md
|
67
39
|
homepage: http://github.com/jm81/paginate
|
68
40
|
licenses: []
|
69
|
-
|
41
|
+
metadata: {}
|
70
42
|
post_install_message:
|
71
43
|
rdoc_options: []
|
72
|
-
|
73
|
-
require_paths:
|
44
|
+
require_paths:
|
74
45
|
- lib
|
75
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
none: false
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
hash: 3
|
90
|
-
segments:
|
91
|
-
- 0
|
92
|
-
version: "0"
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
93
56
|
requirements: []
|
94
|
-
|
95
57
|
rubyforge_project:
|
96
|
-
rubygems_version: 1.
|
58
|
+
rubygems_version: 2.1.10
|
97
59
|
signing_key:
|
98
|
-
specification_version:
|
60
|
+
specification_version: 4
|
99
61
|
summary: Pagination for DataMapper, ActiveRecord, and Array
|
100
|
-
test_files:
|
101
|
-
- spec/fixtures/ar.rb
|
102
|
-
- spec/fixtures/dm.rb
|
103
|
-
- spec/helpers/merb_spec.rb
|
104
|
-
- spec/helpers/rails_spec.rb
|
105
|
-
- spec/helpers/shared_spec.rb
|
106
|
-
- spec/paginate/ar_spec.rb
|
107
|
-
- spec/paginate/config_spec.rb
|
108
|
-
- spec/paginate/dm_spec.rb
|
109
|
-
- spec/paginate/simple_spec.rb
|
110
|
-
- spec/paginators/orm_spec.rb
|
111
|
-
- spec/paginators/simple_spec.rb
|
112
|
-
- spec/shared.rb
|
113
|
-
- spec/spec_helper.rb
|
62
|
+
test_files: []
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2009 Jared Morgan
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/TODO
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
TODO:
|
2
|
-
|
3
|
-
- Rails helpers:
|
4
|
-
Probably similar to Helpers::Merb. I just don't use Rails enough right now to
|
5
|
-
work through it.
|
6
|
-
|
7
|
-
- Check for dependencies:
|
8
|
-
When, for example, Paginate::DM is extended into a class, verify that dm-core
|
9
|
-
and dm-aggregates are loaded. This would give me more timely errors than
|
10
|
-
finding out when #paginate is first called.
|
11
|
-
|
12
|
-
- Generic ORM module:
|
13
|
-
If dependencies are checked for, this would allow a way to use Paginators::ORM
|
14
|
-
through a module without the dependency check.
|
15
|
-
|
16
|
-
- Includes for ORM collections:
|
17
|
-
For example:
|
18
|
-
|
19
|
-
DataMapper::Collection.__send__(:include, Paginate::DM)
|
20
|
-
|
21
|
-
What's the best way to do this?
|
22
|
-
Something similar for AR?
|
23
|
-
Maybe Paginate::auto_includes which would include such as the above
|
data/jm81-paginate.gemspec
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{jm81-paginate}
|
8
|
-
s.version = "0.2.1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Jared Morgan"]
|
12
|
-
s.date = %q{2010-12-02}
|
13
|
-
s.description = %q{This paginate library assists in paginating collections and results of database
|
14
|
-
queries. It is particularly designed for use with DataMapper and ActiveRecord,
|
15
|
-
and for the Merb and Rails frameworks, but can be used in many other situations.
|
16
|
-
}
|
17
|
-
s.email = %q{jmorgan@morgancreative.net}
|
18
|
-
s.extra_rdoc_files = [
|
19
|
-
"LICENSE",
|
20
|
-
"README.md",
|
21
|
-
"TODO"
|
22
|
-
]
|
23
|
-
s.files = [
|
24
|
-
"LICENSE",
|
25
|
-
"README.md",
|
26
|
-
"Rakefile",
|
27
|
-
"TODO",
|
28
|
-
"jm81-paginate.gemspec",
|
29
|
-
"lib/helpers/merb.rb",
|
30
|
-
"lib/helpers/rails.rb",
|
31
|
-
"lib/helpers/shared.rb",
|
32
|
-
"lib/jm81-paginate.rb",
|
33
|
-
"lib/jm81-paginate/version.rb",
|
34
|
-
"lib/paginate/ar.rb",
|
35
|
-
"lib/paginate/dm.rb",
|
36
|
-
"lib/paginate/simple.rb",
|
37
|
-
"lib/paginators/orm.rb",
|
38
|
-
"lib/paginators/simple.rb",
|
39
|
-
"spec/fixtures/ar.rb",
|
40
|
-
"spec/fixtures/dm.rb",
|
41
|
-
"spec/helpers/merb_spec.rb",
|
42
|
-
"spec/helpers/rails_spec.rb",
|
43
|
-
"spec/helpers/shared_spec.rb",
|
44
|
-
"spec/paginate/ar_spec.rb",
|
45
|
-
"spec/paginate/config_spec.rb",
|
46
|
-
"spec/paginate/dm_spec.rb",
|
47
|
-
"spec/paginate/simple_spec.rb",
|
48
|
-
"spec/paginators/orm_spec.rb",
|
49
|
-
"spec/paginators/simple_spec.rb",
|
50
|
-
"spec/shared.rb",
|
51
|
-
"spec/spec.opts",
|
52
|
-
"spec/spec_helper.rb"
|
53
|
-
]
|
54
|
-
s.homepage = %q{http://github.com/jm81/paginate}
|
55
|
-
s.require_paths = ["lib"]
|
56
|
-
s.rubygems_version = %q{1.3.7}
|
57
|
-
s.summary = %q{Pagination for DataMapper, ActiveRecord, and Array}
|
58
|
-
s.test_files = [
|
59
|
-
"spec/fixtures/ar.rb",
|
60
|
-
"spec/fixtures/dm.rb",
|
61
|
-
"spec/helpers/merb_spec.rb",
|
62
|
-
"spec/helpers/rails_spec.rb",
|
63
|
-
"spec/helpers/shared_spec.rb",
|
64
|
-
"spec/paginate/ar_spec.rb",
|
65
|
-
"spec/paginate/config_spec.rb",
|
66
|
-
"spec/paginate/dm_spec.rb",
|
67
|
-
"spec/paginate/simple_spec.rb",
|
68
|
-
"spec/paginators/orm_spec.rb",
|
69
|
-
"spec/paginators/simple_spec.rb",
|
70
|
-
"spec/shared.rb",
|
71
|
-
"spec/spec_helper.rb"
|
72
|
-
]
|
73
|
-
|
74
|
-
if s.respond_to? :specification_version then
|
75
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
76
|
-
s.specification_version = 3
|
77
|
-
|
78
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
79
|
-
else
|
80
|
-
end
|
81
|
-
else
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
data/spec/fixtures/ar.rb
DELETED
data/spec/fixtures/dm.rb
DELETED
data/spec/helpers/merb_spec.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Paginate::Helpers::Merb do
|
4
|
-
before(:all) do
|
5
|
-
@klass = Class.new
|
6
|
-
@klass.__send__(:include, Paginate::Helpers::Merb)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should include #page_set method from Shared' do
|
11
|
-
@object.page_set(5, 10, 2).should ==
|
12
|
-
[1,0,3,4,5,6,7,0,10]
|
13
|
-
end
|
14
|
-
|
15
|
-
# Being lazy and just using a mock here.
|
16
|
-
describe '#pagination_partial' do
|
17
|
-
it 'should call partial' do
|
18
|
-
collection = (1..50).to_a
|
19
|
-
collection.extend(Paginate::Simple)
|
20
|
-
collection = collection.paginate(:page => 5, :limit => 5)
|
21
|
-
vars = {
|
22
|
-
:current_page => 5,
|
23
|
-
:pages => 10,
|
24
|
-
:padding => 4
|
25
|
-
}
|
26
|
-
|
27
|
-
@object.should_receive(:partial).with('partial_name', vars)
|
28
|
-
@object.pagination_partial(collection, 'partial_name', 4)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/spec/helpers/rails_spec.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Paginate::Helpers::Rails do
|
4
|
-
before(:all) do
|
5
|
-
@klass = Class.new
|
6
|
-
@klass.__send__(:include, Paginate::Helpers::Rails)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should include #page_set method from Shared' do
|
11
|
-
@object.page_set(5, 10, 2).should ==
|
12
|
-
[1,0,3,4,5,6,7,0,10]
|
13
|
-
end
|
14
|
-
|
15
|
-
# Being lazy and just using a mock here.
|
16
|
-
describe '#pagination_partial' do
|
17
|
-
it 'should call render(:partial)' do
|
18
|
-
collection = (1..50).to_a
|
19
|
-
collection.extend(Paginate::Simple)
|
20
|
-
collection = collection.paginate(:page => 5, :limit => 5)
|
21
|
-
vars = {
|
22
|
-
:current_page => 5,
|
23
|
-
:pages => 10,
|
24
|
-
:padding => 4
|
25
|
-
}
|
26
|
-
|
27
|
-
@object.should_receive(:render).with(:partial => 'partial_name', :locals => vars)
|
28
|
-
@object.pagination_partial(collection, 'partial_name', 4)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/spec/helpers/shared_spec.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Paginate::Helpers::Shared do
|
4
|
-
before(:all) do
|
5
|
-
@klass = Class.new
|
6
|
-
@klass.__send__(:include, Paginate::Helpers::Shared)
|
7
|
-
@object = @klass.new
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#page_set' do
|
11
|
-
it 'should pad around current page' do
|
12
|
-
@object.page_set(5, 10, 2).should ==
|
13
|
-
[1,0,3,4,5,6,7,0,10]
|
14
|
-
|
15
|
-
@object.page_set(5, 10, 1).should ==
|
16
|
-
[1,0,4,5,6,0,10]
|
17
|
-
|
18
|
-
@object.page_set(5, 10, 0).should ==
|
19
|
-
[1,0,5,0,10]
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should default padding to 3' do
|
23
|
-
@object.page_set(10, 20).should ==
|
24
|
-
[1,0,7,8,9,10,11,12,13,0,20]
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should not repeat first page' do
|
28
|
-
@object.page_set(2, 10, 2).should ==
|
29
|
-
[1,2,3,4,0,10]
|
30
|
-
|
31
|
-
@object.page_set(1, 10, 2).should ==
|
32
|
-
[1,2,3,0,10]
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should not repeat last page' do
|
36
|
-
@object.page_set(9, 10, 2).should ==
|
37
|
-
[1,0,7,8,9,10]
|
38
|
-
|
39
|
-
@object.page_set(10, 10, 2).should ==
|
40
|
-
[1,0,8,9,10]
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should include 0 when pages skipped' do
|
44
|
-
@object.page_set(5, 10, 2).should ==
|
45
|
-
[1,0,3,4,5,6,7,0,10]
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'should not include 0 when padding is next to first or last' do
|
49
|
-
@object.page_set(3, 10, 2).should ==
|
50
|
-
[1,2,3,4,5,0,10]
|
51
|
-
|
52
|
-
@object.page_set(8, 10, 2).should ==
|
53
|
-
[1,0,6,7,8,9,10]
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'should just return [1] if only 1 page' do
|
57
|
-
@object.page_set(1, 1, 3).should ==
|
58
|
-
[1]
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe '#url_for_pagination' do
|
63
|
-
it 'should add page query option' do
|
64
|
-
@object.url_for_pagination(5, 'path', '').should ==
|
65
|
-
'path?page=5'
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should leave other query options' do
|
69
|
-
@object.url_for_pagination(5, 'path', 'limit=10&something=text').should ==
|
70
|
-
'path?page=5&limit=10&something=text'
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'should remove existing page option' do
|
74
|
-
# middle
|
75
|
-
@object.url_for_pagination(5, 'path', 'limit=10&page=10&something=text').should ==
|
76
|
-
'path?page=5&limit=10&something=text'
|
77
|
-
|
78
|
-
# start
|
79
|
-
@object.url_for_pagination(5, 'path', 'page=10&limit=10&something=text').should ==
|
80
|
-
'path?page=5&limit=10&something=text'
|
81
|
-
|
82
|
-
# end
|
83
|
-
@object.url_for_pagination(5, 'path', 'limit=10&something=text&page=10').should ==
|
84
|
-
'path?page=5&limit=10&something=text'
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'should remove existing negative page option' do
|
88
|
-
@object.url_for_pagination(5, 'path', 'limit=10&page=-10&something=text').should ==
|
89
|
-
'path?page=5&limit=10&something=text'
|
90
|
-
|
91
|
-
@object.url_for_pagination(5, 'path', 'page=-5&limit=10&something=text').should ==
|
92
|
-
'path?page=5&limit=10&something=text'
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
data/spec/paginate/ar_spec.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'active_record'
|
3
|
-
|
4
|
-
# Setup AR connection, schema
|
5
|
-
ActiveRecord::Base.establish_connection(
|
6
|
-
:adapter => "sqlite3",
|
7
|
-
:database => ":memory:"
|
8
|
-
)
|
9
|
-
|
10
|
-
ActiveRecord::Schema.define do
|
11
|
-
create_table :ar_models do |table|
|
12
|
-
table.column :name, :string
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
require 'fixtures/ar'
|
17
|
-
|
18
|
-
describe 'Paginate::AR' do
|
19
|
-
before(:each) do
|
20
|
-
@model = Paginate::Fixtures::ArModel
|
21
|
-
@model.destroy_all
|
22
|
-
1.upto(50) do |i|
|
23
|
-
@model.create(:name => "Person #{i}")
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def paginated(options = {})
|
28
|
-
@model.paginate(options)
|
29
|
-
end
|
30
|
-
|
31
|
-
def paginated_collected(options = {})
|
32
|
-
@model.paginate(options).collect {|r| r.name}
|
33
|
-
end
|
34
|
-
|
35
|
-
def destroy_all
|
36
|
-
@model.destroy_all
|
37
|
-
end
|
38
|
-
|
39
|
-
describe '#paginate' do
|
40
|
-
it_should_behave_like "all paginate methods"
|
41
|
-
it_should_behave_like "ORM paginate methods"
|
42
|
-
|
43
|
-
it 'should order per options passed' do
|
44
|
-
paginated_collected(:limit => 3, :page => 1, :order => 'id desc').should ==
|
45
|
-
["Person 50", "Person 49", "Person 48"]
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'should accept conditions (representative of options to .all)' do
|
49
|
-
collection = paginated(:limit => 3, :page => 1, :conditions => ['name like ?', 'Person 3%'])
|
50
|
-
collection.collect {|r| r.name}.should ==
|
51
|
-
["Person 3", "Person 30", "Person 31"]
|
52
|
-
collection.pages.should == 4
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Paginate.config" do
|
4
|
-
before(:each) do
|
5
|
-
# Force to default state
|
6
|
-
Paginate.instance_variable_set(:@config, nil)
|
7
|
-
end
|
8
|
-
|
9
|
-
after(:all) do
|
10
|
-
# Force to default state for other specs
|
11
|
-
Paginate.instance_variable_set(:@config, nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should initialize with DEFAULTS' do
|
15
|
-
Paginate.config.should == Paginate::DEFAULTS
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'should be writable' do
|
19
|
-
Paginate.config[:default_limit] = 1
|
20
|
-
Paginate.instance_variable_get(:@config)[:default_limit].should == 1
|
21
|
-
end
|
22
|
-
|
23
|
-
describe ':default_limit' do
|
24
|
-
it 'should be used as default limit' do
|
25
|
-
Paginate.config[:default_limit] = 3
|
26
|
-
ary = (1..20).collect {|i| 'Item #{i}'}
|
27
|
-
ary.extend(Paginate::Simple)
|
28
|
-
ary.paginate.length.should == 3
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/spec/paginate/dm_spec.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'dm-core'
|
3
|
-
require 'dm-aggregates'
|
4
|
-
require 'dm-migrations'
|
5
|
-
require 'fixtures/dm'
|
6
|
-
|
7
|
-
describe Paginate::DM do
|
8
|
-
before(:all) do
|
9
|
-
@model = Paginate::Fixtures::DmModel
|
10
|
-
@model.auto_migrate!
|
11
|
-
end
|
12
|
-
|
13
|
-
before(:each) do
|
14
|
-
@model.all.destroy!
|
15
|
-
1.upto(50) do |i|
|
16
|
-
@model.create(:name => "Person #{i}")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def paginated(options = {})
|
21
|
-
@model.paginate(options)
|
22
|
-
end
|
23
|
-
|
24
|
-
def paginated_collected(options = {})
|
25
|
-
@model.paginate(options).collect {|r| r.name}
|
26
|
-
end
|
27
|
-
|
28
|
-
def destroy_all
|
29
|
-
@model.all.destroy!
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '#paginate' do
|
33
|
-
it_should_behave_like "all paginate methods"
|
34
|
-
it_should_behave_like "ORM paginate methods"
|
35
|
-
|
36
|
-
it 'should order per options passed' do
|
37
|
-
paginated_collected(:limit => 3, :page => 1, :order => [:id.desc]).should ==
|
38
|
-
["Person 50", "Person 49", "Person 48"]
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should accept conditions (representative of options to .all)' do
|
42
|
-
collection = paginated(:limit => 3, :page => 1, :name.like => 'Person 3%')
|
43
|
-
collection.collect {|r| r.name}.should ==
|
44
|
-
["Person 3", "Person 30", "Person 31"]
|
45
|
-
collection.pages.should == 4
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Paginate::Simple do
|
4
|
-
before(:each) do
|
5
|
-
@full_collection = []
|
6
|
-
1.upto(50) do |i|
|
7
|
-
@full_collection << "Person #{i}"
|
8
|
-
end
|
9
|
-
@full_collection.extend(Paginate::Simple)
|
10
|
-
end
|
11
|
-
|
12
|
-
def paginated(options = {})
|
13
|
-
@full_collection.paginate(options)
|
14
|
-
end
|
15
|
-
|
16
|
-
def paginated_collected(options = {})
|
17
|
-
paginated(options)
|
18
|
-
end
|
19
|
-
|
20
|
-
def destroy_all
|
21
|
-
50.times { @full_collection.pop }
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#paginate' do
|
25
|
-
it_should_behave_like "all paginate methods"
|
26
|
-
end
|
27
|
-
end
|
data/spec/paginators/orm_spec.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'dm-core'
|
2
|
-
require 'dm-aggregates'
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'fixtures/dm'
|
5
|
-
|
6
|
-
describe Paginate::Paginators::ORM do
|
7
|
-
Model = Paginate::Fixtures::DmModel
|
8
|
-
before(:all) do
|
9
|
-
Model.auto_migrate!
|
10
|
-
end
|
11
|
-
|
12
|
-
before(:each) do
|
13
|
-
Model.all.destroy!
|
14
|
-
1.upto(50) do |i|
|
15
|
-
Model.create(:name => "Person #{i}")
|
16
|
-
end
|
17
|
-
@model = Model
|
18
|
-
@klass = Paginate::Paginators::ORM
|
19
|
-
end
|
20
|
-
|
21
|
-
def paginated(options = {})
|
22
|
-
@klass.new(Model, options).paginate
|
23
|
-
end
|
24
|
-
|
25
|
-
def paginated_collected(options = {})
|
26
|
-
paginated(options).collect {|r| r.name}
|
27
|
-
end
|
28
|
-
|
29
|
-
def destroy_all
|
30
|
-
Model.all.destroy!
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#paginate' do
|
34
|
-
it_should_behave_like "all paginate methods"
|
35
|
-
it_should_behave_like "ORM paginate methods"
|
36
|
-
|
37
|
-
it 'should order per options passed' do
|
38
|
-
paginated_collected(:limit => 3, :page => 1, :order => [:id.desc]).should ==
|
39
|
-
["Person 50", "Person 49", "Person 48"]
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'should accept conditions (representative of options to .all)' do
|
43
|
-
collection = paginated(:limit => 3, :page => 1, :name.like => 'Person 3%')
|
44
|
-
collection.collect {|r| r.name}.should ==
|
45
|
-
["Person 3", "Person 30", "Person 31"]
|
46
|
-
collection.pages.should == 4
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Paginate::Paginators::Simple do
|
4
|
-
# No instance variables are expected by the shared specs, only a +paginated+
|
5
|
-
# and a +destroy_all+ method.
|
6
|
-
before(:each) do
|
7
|
-
@full_collection = []
|
8
|
-
1.upto(50) do |i|
|
9
|
-
@full_collection << "Person #{i}"
|
10
|
-
end
|
11
|
-
@klass = Paginate::Paginators::Simple
|
12
|
-
end
|
13
|
-
|
14
|
-
# paginated is called by shared specs to get a paginated result for the
|
15
|
-
# collection.
|
16
|
-
def paginated(options = {})
|
17
|
-
@klass.new(@full_collection, options).paginate
|
18
|
-
end
|
19
|
-
|
20
|
-
# paginated_collected returns results in a standard format: It should just
|
21
|
-
# return an Array of Strings, such as:
|
22
|
-
# ["Person 1", "Person 2"], so #collect may be needed in more complex
|
23
|
-
# classes.
|
24
|
-
def paginated_collected(options = {})
|
25
|
-
paginated(options)
|
26
|
-
end
|
27
|
-
|
28
|
-
# destroy_all is called to make @full_collection an empty set. This may mean
|
29
|
-
# that all records need to be deleted in, for example, an ORM Paginator.
|
30
|
-
def destroy_all
|
31
|
-
@full_collection = []
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#paginate' do
|
35
|
-
it_should_behave_like "all paginate methods"
|
36
|
-
end
|
37
|
-
end
|
data/spec/shared.rb
DELETED
@@ -1,155 +0,0 @@
|
|
1
|
-
# Specs shared by Paginator classes and Paginate modules. These test that the
|
2
|
-
# Paginator (directly or via a module) returns the right results based on
|
3
|
-
# +page+ and +limit+ options.
|
4
|
-
#
|
5
|
-
# +paginated+, +paginated_collected+ and +destroy_all+ methods are expected
|
6
|
-
# by specs. A +@model+ instance variable is expected for "ORM paginate methods".
|
7
|
-
# See simple_spec.rb for examples.
|
8
|
-
#
|
9
|
-
# +paginated+ is called by shared specs to get a paginated result for the
|
10
|
-
# collection.
|
11
|
-
#
|
12
|
-
# +paginated_collected+ calls paginate, but returns an Array of Strings. If all
|
13
|
-
# results were returned, it should return an Array of
|
14
|
-
# ["Person 1", "Person 2", ..., "Person 50"] (50 records total). #collect may be
|
15
|
-
# needed in more complex classes. For example:
|
16
|
-
#
|
17
|
-
# @klass.paginate(@full_collection, options).collect {|r| r.name}
|
18
|
-
# Model.paginate(options).collect {|r| r.name}
|
19
|
-
#
|
20
|
-
# +destroy_all+ is called to make the full collection an empty set. This may
|
21
|
-
# mean that all records need to be deleted in, for example, an ORM Paginator.
|
22
|
-
|
23
|
-
shared_examples_for "all paginate methods" do
|
24
|
-
describe ':page option' do
|
25
|
-
it 'should return correct results per page (correct offset, limit)' do
|
26
|
-
paginated_collected(:page => 1, :limit => 5).should ==
|
27
|
-
["Person 1", "Person 2", "Person 3", "Person 4", "Person 5"]
|
28
|
-
|
29
|
-
paginated_collected(:page => 2, :limit => 5).should ==
|
30
|
-
["Person 6", "Person 7", "Person 8", "Person 9", "Person 10"]
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should return page 1 if options[:page] == 0' do
|
34
|
-
paginated_collected(:page => 0, :limit => 3).should ==
|
35
|
-
["Person 1", "Person 2", "Person 3"]
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'should return page 1 if options[:page] not set' do
|
39
|
-
paginated_collected(:limit => 3, :page => -50).should ==
|
40
|
-
["Person 1", "Person 2", "Person 3"]
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should return last page if options[:page] > total pages' do
|
44
|
-
paginated_collected(:limit => 5, :page => 11).should ==
|
45
|
-
["Person 46", "Person 47", "Person 48", "Person 49", "Person 50"]
|
46
|
-
|
47
|
-
paginated_collected(:limit => 5, :page => 20).should ==
|
48
|
-
["Person 46", "Person 47", "Person 48", "Person 49", "Person 50"]
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'should return last page for page == -1' do
|
52
|
-
paginated_collected(:limit => 5, :page => -1).should ==
|
53
|
-
["Person 46", "Person 47", "Person 48", "Person 49", "Person 50"]
|
54
|
-
|
55
|
-
paginated_collected(:limit => 3, :page => -1).should ==
|
56
|
-
["Person 49", "Person 50"]
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'should return page from last for negative options[:page]' do
|
60
|
-
paginated_collected(:limit => 3, :page => -2).should ==
|
61
|
-
["Person 46", "Person 47", "Person 48"]
|
62
|
-
|
63
|
-
paginated_collected(:limit => 3, :page => -3).should ==
|
64
|
-
["Person 43", "Person 44", "Person 45"]
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'should return first page for very negative options[:page] values' do
|
68
|
-
paginated_collected(:limit => 3, :page => -50).should ==
|
69
|
-
["Person 1", "Person 2", "Person 3"]
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'should have at least one result on the last page' do
|
73
|
-
paginated(:limit => 5, :page => 10).should_not be_empty
|
74
|
-
|
75
|
-
collection = paginated(:limit => 5, :page => 11)
|
76
|
-
collection.should_not be_empty
|
77
|
-
collection.current_page.should == 10
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'should default limit to config[:default_limit]' do
|
81
|
-
paginated().length.should == Paginate.config[:default_limit]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe '#current_page' do
|
86
|
-
it 'should be added to collection' do
|
87
|
-
collection = paginated(:limit => 10)
|
88
|
-
# collection.methods.should include("current_page")
|
89
|
-
# Not sure why the above won't work. #singleton_methods doesn't either.
|
90
|
-
collection.current_page.should be_kind_of(Integer)
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'should be the number of the current page' do
|
94
|
-
paginated(:limit => 10, :page => 2).current_page.should == 2
|
95
|
-
paginated(:limit => 10, :page => 5).current_page.should == 5
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'should be 1 if there are no results' do
|
99
|
-
destroy_all
|
100
|
-
paginated(:limit => 10).current_page.should == 1
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'should be >= 1 and <= #pages (ie actual page, not given page)' do
|
104
|
-
paginated(:limit => 10, :page => -100).current_page.should == 1
|
105
|
-
paginated(:limit => 10, :page => 100).current_page.should == 5
|
106
|
-
paginated(:limit => 10, :page => -1).current_page.should == 5
|
107
|
-
paginated(:limit => 10, :page => 0).current_page.should == 1
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe '#pages' do
|
112
|
-
it 'should be added to collection' do
|
113
|
-
collection = paginated(:limit => 10)
|
114
|
-
# collection.methods.should include("pages")
|
115
|
-
# Not sure why the above won't work. #singleton_methods doesn't either.
|
116
|
-
collection.pages.should be_kind_of(Integer)
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'should be the total number of pages for the collection' do
|
120
|
-
paginated(:limit => 10).pages.should == 5
|
121
|
-
paginated(:limit => 49).pages.should == 2
|
122
|
-
paginated(:limit => 50).pages.should == 1
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'should be 1 if there are no results' do
|
126
|
-
destroy_all
|
127
|
-
paginated(:limit => 10).pages.should == 1
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
# These specs are specific to ORM classes/modules, testing that +all+ receives
|
133
|
-
# the correct options.
|
134
|
-
#
|
135
|
-
# A +@model+ instance variable is expected.
|
136
|
-
shared_examples_for "ORM paginate methods" do
|
137
|
-
it "should set limit and offset options" do
|
138
|
-
limit = 10
|
139
|
-
|
140
|
-
@model.should_receive(:all).with(:offset => 0, :limit => limit)
|
141
|
-
paginated(:page => 1, :limit => limit)
|
142
|
-
|
143
|
-
@model.should_receive(:all).with(:offset => 0, :limit => limit + 1)
|
144
|
-
paginated(:page => 1, :limit => limit + 1)
|
145
|
-
|
146
|
-
@model.should_receive(:all).with(:offset => 0, :limit => limit + 2)
|
147
|
-
paginated(:limit => limit + 2)
|
148
|
-
|
149
|
-
@model.should_receive(:all).with(:offset => limit, :limit => limit)
|
150
|
-
paginated(:page => 2, :limit => limit)
|
151
|
-
|
152
|
-
@model.should_receive(:all).with(:offset => 40, :limit => limit)
|
153
|
-
paginated(:page => -1, :limit => limit)
|
154
|
-
end
|
155
|
-
end
|
data/spec/spec.opts
DELETED