kaminari 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kaminari might be problematic. Click here for more details.

Files changed (87) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +8 -1
  3. data/CHANGELOG +46 -10
  4. data/README.rdoc +14 -3
  5. data/Rakefile +22 -2
  6. data/app/views/kaminari/_first_page.html.erb +1 -1
  7. data/app/views/kaminari/_first_page.html.haml +1 -1
  8. data/app/views/kaminari/_first_page.html.slim +1 -1
  9. data/app/views/kaminari/_gap.html.erb +1 -1
  10. data/app/views/kaminari/_gap.html.haml +1 -1
  11. data/app/views/kaminari/_gap.html.slim +1 -1
  12. data/app/views/kaminari/_last_page.html.erb +1 -1
  13. data/app/views/kaminari/_last_page.html.haml +1 -1
  14. data/app/views/kaminari/_last_page.html.slim +1 -1
  15. data/app/views/kaminari/_next_page.html.erb +1 -1
  16. data/app/views/kaminari/_next_page.html.haml +1 -1
  17. data/app/views/kaminari/_next_page.html.slim +1 -1
  18. data/app/views/kaminari/_page.html.erb +2 -2
  19. data/app/views/kaminari/_page.html.haml +1 -1
  20. data/app/views/kaminari/_page.html.slim +1 -1
  21. data/app/views/kaminari/_paginator.html.erb +1 -1
  22. data/app/views/kaminari/_paginator.html.haml +1 -1
  23. data/app/views/kaminari/_paginator.html.slim +1 -1
  24. data/app/views/kaminari/_prev_page.html.erb +1 -1
  25. data/app/views/kaminari/_prev_page.html.haml +1 -1
  26. data/app/views/kaminari/_prev_page.html.slim +1 -1
  27. data/config/locales/kaminari.yml +9 -0
  28. data/gemfiles/active_record_30.gemfile +7 -0
  29. data/gemfiles/active_record_31.gemfile +7 -0
  30. data/gemfiles/active_record_32.gemfile +7 -0
  31. data/gemfiles/data_mapper_12.gemfile +12 -0
  32. data/gemfiles/mongo_mapper.gemfile +7 -0
  33. data/gemfiles/mongoid_24.gemfile +7 -0
  34. data/gemfiles/mongoid_30.gemfile +7 -0
  35. data/gemfiles/sinatra.gemfile +10 -0
  36. data/kaminari.gemspec +6 -18
  37. data/lib/generators/kaminari/templates/kaminari_config.rb +1 -0
  38. data/lib/kaminari.rb +22 -57
  39. data/lib/kaminari/config.rb +7 -1
  40. data/lib/kaminari/grape.rb +4 -0
  41. data/lib/kaminari/helpers/action_view_extension.rb +84 -13
  42. data/lib/kaminari/helpers/paginator.rb +8 -5
  43. data/lib/kaminari/helpers/sinatra_helpers.rb +25 -6
  44. data/lib/kaminari/helpers/tags.rb +1 -1
  45. data/lib/kaminari/hooks.rb +12 -10
  46. data/lib/kaminari/models/active_record_relation_methods.rb +0 -3
  47. data/lib/kaminari/models/configuration_methods.rb +15 -1
  48. data/lib/kaminari/models/page_scope_methods.rb +6 -2
  49. data/lib/kaminari/models/plucky_criteria_methods.rb +3 -0
  50. data/lib/kaminari/railtie.rb +2 -2
  51. data/lib/kaminari/sinatra.rb +2 -10
  52. data/lib/kaminari/version.rb +1 -1
  53. data/spec/config/config_spec.rb +15 -0
  54. data/spec/fake_app/active_record/config.rb +3 -0
  55. data/spec/{fake_app.rb → fake_app/active_record/models.rb} +7 -34
  56. data/spec/fake_app/data_mapper/config.rb +1 -0
  57. data/spec/fake_app/data_mapper/models.rb +27 -0
  58. data/spec/fake_app/mongo_mapper/config.rb +2 -0
  59. data/spec/fake_app/mongo_mapper/models.rb +9 -0
  60. data/spec/fake_app/mongoid/config.rb +16 -0
  61. data/spec/fake_app/mongoid/models.rb +22 -0
  62. data/spec/fake_app/rails_app.rb +55 -0
  63. data/spec/fake_app/sinatra_app.rb +22 -0
  64. data/spec/fake_gem.rb +0 -2
  65. data/spec/helpers/action_view_extension_spec.rb +192 -45
  66. data/spec/helpers/helpers_spec.rb +8 -8
  67. data/spec/helpers/sinatra_helpers_spec.rb +129 -133
  68. data/spec/helpers/tags_spec.rb +8 -8
  69. data/spec/models/active_record/active_record_relation_methods_spec.rb +30 -0
  70. data/spec/models/active_record/default_per_page_spec.rb +32 -0
  71. data/spec/models/active_record/max_per_page_spec.rb +32 -0
  72. data/spec/models/active_record/scopes_spec.rb +166 -0
  73. data/spec/models/array_spec.rb +7 -7
  74. data/spec/models/data_mapper/data_mapper_spec.rb +155 -0
  75. data/spec/models/mongo_mapper/mongo_mapper_spec.rb +72 -0
  76. data/spec/models/mongoid/mongoid_spec.rb +110 -0
  77. data/spec/requests/users_spec.rb +0 -1
  78. data/spec/spec_helper.rb +20 -18
  79. data/spec/spec_helper_for_sinatra.rb +22 -0
  80. data/spec/support/database_cleaner.rb +4 -1
  81. metadata +93 -141
  82. data/spec/models/active_record_relation_methods_spec.rb +0 -28
  83. data/spec/models/data_mapper_spec.rb +0 -181
  84. data/spec/models/default_per_page_spec.rb +0 -29
  85. data/spec/models/mongo_mapper_spec.rb +0 -82
  86. data/spec/models/mongoid_spec.rb +0 -129
  87. data/spec/models/scopes_spec.rb +0 -163
@@ -1,163 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'the first page' do
4
- it { should have(25).users }
5
- its('first.name') { should == 'user001' }
6
- end
7
-
8
- shared_examples_for 'blank page' do
9
- it { should have(0).users }
10
- end
11
-
12
- describe Kaminari::ActiveRecordExtension do
13
- before :all do
14
- 1.upto(100) {|i| User.create! :name => "user#{'%03d' % i}", :age => (i / 10)}
15
- 1.upto(100) {|i| GemDefinedModel.create! :name => "user#{'%03d' % i}", :age => (i / 10)}
16
- end
17
-
18
- [User, Admin, GemDefinedModel].each do |model_class|
19
- context "for #{model_class}" do
20
- describe '#page' do
21
- context 'page 1' do
22
- subject { model_class.page 1 }
23
- it_should_behave_like 'the first page'
24
- end
25
-
26
- context 'page 2' do
27
- subject { model_class.page 2 }
28
- it { should have(25).users }
29
- its('first.name') { should == 'user026' }
30
- end
31
-
32
- context 'page without an argument' do
33
- subject { model_class.page }
34
- it_should_behave_like 'the first page'
35
- end
36
-
37
- context 'page < 1' do
38
- subject { model_class.page 0 }
39
- it_should_behave_like 'the first page'
40
- end
41
-
42
- context 'page > max page' do
43
- subject { model_class.page 5 }
44
- it_should_behave_like 'blank page'
45
- end
46
-
47
- describe 'ensure #order_values is preserved' do
48
- subject { model_class.order('id').page 1 }
49
- its('order_values.uniq') { should == ['id'] }
50
- end
51
- end
52
-
53
- describe '#per' do
54
- context 'page 1 per 5' do
55
- subject { model_class.page(1).per(5) }
56
- it { should have(5).users }
57
- its('first.name') { should == 'user001' }
58
- end
59
- end
60
-
61
- describe '#padding' do
62
- context 'page 1 per 5 padding 1' do
63
- subject { model_class.page(1).per(5).padding(1) }
64
- it { should have(5).users }
65
- its('first.name') { should == 'user002' }
66
- end
67
- end
68
-
69
- describe '#num_pages' do
70
- context 'per 25 (default)' do
71
- subject { model_class.page }
72
- its(:num_pages) { should == 4 }
73
- end
74
-
75
- context 'per 7' do
76
- subject { model_class.page(2).per(7) }
77
- its(:num_pages) { should == 15 }
78
- end
79
-
80
- context 'per 65536' do
81
- subject { model_class.page(50).per(65536) }
82
- its(:num_pages) { should == 1 }
83
- end
84
-
85
- context 'per 0 (using default)' do
86
- subject { model_class.page(50).per(0) }
87
- its(:num_pages) { should == 4 }
88
- end
89
-
90
- context 'per -1 (using default)' do
91
- subject { model_class.page(5).per(-1) }
92
- its(:num_pages) { should == 4 }
93
- end
94
-
95
- context 'per "String value that can not be converted into Number" (using default)' do
96
- subject { model_class.page(5).per('aho') }
97
- its(:num_pages) { should == 4 }
98
- end
99
- end
100
-
101
-
102
- describe '#current_page' do
103
- context 'page 1' do
104
- subject { model_class.page }
105
- its(:current_page) { should == 1 }
106
- end
107
-
108
- context 'page 2' do
109
- subject { model_class.page(2).per 3 }
110
- its(:current_page) { should == 2 }
111
- end
112
- end
113
-
114
- describe '#first_page?' do
115
- context 'on first page' do
116
- subject { model_class.page(1).per(10) }
117
- its(:first_page?) { should == true }
118
- end
119
-
120
- context 'not on first page' do
121
- subject { model_class.page(5).per(10) }
122
- its(:first_page?) { should == false }
123
- end
124
- end
125
-
126
- describe '#last_page?' do
127
- context 'on last page' do
128
- subject { model_class.page(10).per(10) }
129
- its(:last_page?) { should == true }
130
- end
131
-
132
- context 'not on last page' do
133
- subject { model_class.page(1).per(10) }
134
- its(:last_page?) { should == false }
135
- end
136
- end
137
-
138
- describe '#count' do
139
- context 'page 1' do
140
- subject { model_class.page }
141
- its(:count) { should == 25 }
142
- end
143
-
144
- context 'page 2' do
145
- subject { model_class.page 2 }
146
- its(:count) { should == 25 }
147
- end
148
- end
149
-
150
- context 'chained with .group' do
151
- subject { model_class.group('age').page(2).per 5 }
152
- # 0..10
153
- its(:total_count) { should == 11 }
154
- its(:num_pages) { should == 3 }
155
- end
156
-
157
- context 'activerecord descendants' do
158
- subject { ActiveRecord::Base.descendants }
159
- its(:length) { should_not == 0 }
160
- end
161
- end
162
- end
163
- end