magic_grid 0.12.3 → 0.12.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -45,7 +45,7 @@ describe MagicGrid::Column do
45
45
  data = [1,2,3].tap do |c|
46
46
  c.stub(:search) { c }
47
47
  end
48
- MagicGrid::Collection.new(data, search_method: :search)
48
+ MagicGrid::Collection.new(data, :search_method => :search)
49
49
  }
50
50
  # I actually consider this a bug, since it is totally inconsistent, but
51
51
  # it's how things are currently implemented.
@@ -24,7 +24,7 @@ describe MagicGrid::Definition do
24
24
  end
25
25
 
26
26
  let (:empty_collection) { [] }
27
- let (:large_collection) { 200.times.map { |i| {id: i, name: "Name", description: "Describe me!"} } }
27
+ let (:large_collection) { 200.times.map { |i| {:id => i, :name => "Name", :description => "Describe me!"} } }
28
28
  let (:column_list) { [:name, :description] }
29
29
  let (:column_hash) { {} }
30
30
 
@@ -52,13 +52,13 @@ describe MagicGrid::Definition do
52
52
  }
53
53
  it "doesn't barf when listeners are given for a dumb collection" do
54
54
  expect {
55
- MagicGrid::Definition.new([:a], [1], controller, listeners: {a: :a})
55
+ MagicGrid::Definition.new([:a], [1], controller, :listeners => {:a => :a})
56
56
  }.not_to raise_error
57
57
  end
58
58
 
59
59
  it "doesn't barf when search columns are given for a dumb collection" do
60
60
  expect {
61
- MagicGrid::Definition.new([:a], [1], controller, searchable: [:a])
61
+ MagicGrid::Definition.new([:a], [1], controller, :searchable => [:a])
62
62
  }.not_to raise_error
63
63
  end
64
64
  end
@@ -71,7 +71,7 @@ describe MagicGrid::Definition do
71
71
  it_behaves_like "a basic grid"
72
72
 
73
73
  context "when pagination is disabled" do
74
- subject { MagicGrid::Definition.new(column_list, empty_collection, nil, per_page: false) }
74
+ subject { MagicGrid::Definition.new(column_list, empty_collection, nil, :per_page => false) }
75
75
  its(:current_page) { should == 1 }
76
76
  its(:collection) { should be_empty }
77
77
  end
@@ -80,7 +80,7 @@ describe MagicGrid::Definition do
80
80
  context "when given a large collection and default options" do
81
81
  let(:controller) {
82
82
  controller = double()
83
- controller.stub(:params) { {page: 2} }
83
+ controller.stub(:params) { {:page => 2} }
84
84
  controller
85
85
  }
86
86
  subject { MagicGrid::Definition.new(column_list, large_collection, controller) }
@@ -101,10 +101,10 @@ describe MagicGrid::Definition do
101
101
  context "when given a large collection and some options" do
102
102
  let(:controller) {
103
103
  controller = double()
104
- controller.stub(:params) { HashWithIndifferentAccess.new({grid_page: 2}) }
104
+ controller.stub(:params) { HashWithIndifferentAccess.new({:grid_page => 2}) }
105
105
  controller
106
106
  }
107
- subject { MagicGrid::Definition.new(column_list, large_collection, controller, id: :grid, per_page: 17) }
107
+ subject { MagicGrid::Definition.new(column_list, large_collection, controller, :id => :grid, :per_page => 17) }
108
108
  its(:collection) { should_not == empty_collection }
109
109
  it "should give a collection with a page worth of items" do
110
110
  subject.magic_collection.per_page.should < large_collection.count
@@ -124,13 +124,13 @@ describe MagicGrid::Definition do
124
124
  data = [1,56,7,21,1]
125
125
  let(:controller) {
126
126
  controller = double()
127
- controller.stub(:params) { HashWithIndifferentAccess.new({grid_order: 1}) }
127
+ controller.stub(:params) { HashWithIndifferentAccess.new({:grid_order => 1}) }
128
128
  controller
129
129
  }
130
130
  let(:collection) { data }
131
131
  it "should sort collection using #order" do
132
132
  collection.should_receive(:order).with("foo DESC") { data.sort.reverse }
133
- grid = MagicGrid::Definition.new([{sql: "foo"}], collection, controller, id: :grid)
133
+ grid = MagicGrid::Definition.new([{:sql => "foo"}], collection, controller, :id => :grid)
134
134
 
135
135
  grid.collection.should == data.sort.reverse
136
136
  end
@@ -139,14 +139,14 @@ describe MagicGrid::Definition do
139
139
 
140
140
  context "filtering with #where" do
141
141
  it "should use listeners with #where when asked to" do
142
- filter_param = HashWithIndifferentAccess.new({f1: 1})
143
- controller = double(params: filter_param)
142
+ filter_param = HashWithIndifferentAccess.new({:f1 => 1})
143
+ controller = double(:params => filter_param)
144
144
  collection = [1,56,7,21,1]
145
145
  collection.should_receive(:where).with(filter_param).and_return([1, 7, 1])
146
- grid = MagicGrid::Definition.new([{sql: "foo"}],
146
+ grid = MagicGrid::Definition.new([{:sql => "foo"}],
147
147
  collection,
148
148
  controller,
149
- id: :grid, listeners: {f1: :f1})
149
+ :id => :grid, :listeners => {:f1 => :f1})
150
150
  grid.collection.should == [1, 7, 1]
151
151
  end
152
152
  end
@@ -158,17 +158,17 @@ describe MagicGrid::Definition do
158
158
  end
159
159
  let(:controller) {
160
160
  controller = double.tap do |c|
161
- c.stub(:params) { HashWithIndifferentAccess.new({column_name: 1}) }
161
+ c.stub(:params) { HashWithIndifferentAccess.new({:column_name => 1}) }
162
162
  end
163
163
  }
164
164
  let(:collection) { data }
165
165
 
166
166
  it "should use a listener_hanlder callback when given one" do
167
167
  options = {
168
- id: :grid,
169
- listener_handler: filter
168
+ :id => :grid,
169
+ :listener_handler => filter
170
170
  }
171
- grid = MagicGrid::Definition.new([{sql: "foo"}],
171
+ grid = MagicGrid::Definition.new([{:sql => "foo"}],
172
172
  collection,
173
173
  controller,
174
174
  options)
@@ -177,11 +177,11 @@ describe MagicGrid::Definition do
177
177
 
178
178
  it "should use listeners as where filters when given and set" do
179
179
  options = {
180
- id: :grid,
181
- listeners: { input_id: :column_name }
180
+ :id => :grid,
181
+ :listeners => { :input_id => :column_name }
182
182
  }
183
183
  collection.should_receive(:where).with("column_name" => 1).and_return([1,2,3])
184
- grid = MagicGrid::Definition.new([{sql: "foo"}],
184
+ grid = MagicGrid::Definition.new([{:sql => "foo"}],
185
185
  collection,
186
186
  controller,
187
187
  options)
@@ -190,12 +190,12 @@ describe MagicGrid::Definition do
190
190
 
191
191
  it "should ignore listener params when a listener_hanlder callback is given" do
192
192
  options = {
193
- id: :grid,
194
- listener_handler: filter,
195
- listeners: { input_id: :column_name }
193
+ :id => :grid,
194
+ :listener_handler => filter,
195
+ :listeners => { :input_id => :column_name }
196
196
  }
197
197
  collection.should_not_receive(:where)
198
- grid = MagicGrid::Definition.new([{sql: "foo"}],
198
+ grid = MagicGrid::Definition.new([{:sql => "foo"}],
199
199
  collection,
200
200
  controller,
201
201
  options)
@@ -213,16 +213,16 @@ describe MagicGrid::Definition do
213
213
  end
214
214
  let(:controller) {
215
215
  controller = double.tap do |c|
216
- c.stub(:params) { HashWithIndifferentAccess.new({f1: 1}) }
216
+ c.stub(:params) { HashWithIndifferentAccess.new({:f1 => 1}) }
217
217
  end
218
218
  }
219
219
  let(:collection) {
220
220
  data
221
221
  }
222
- subject { MagicGrid::Definition.new([{sql: "foo"}],
222
+ subject { MagicGrid::Definition.new([{:sql => "foo"}],
223
223
  collection,
224
224
  controller,
225
- id: :grid, post_filter: filter) }
225
+ :id => :grid, :post_filter => filter) }
226
226
  its(:collection) { should == [56, 21] }
227
227
  end
228
228
 
@@ -230,7 +230,7 @@ describe MagicGrid::Definition do
230
230
  data = [1,56,7,21,1]
231
231
  let(:controller) {
232
232
  controller = double.tap do |c|
233
- c.stub(:params) { HashWithIndifferentAccess.new({f1: 1}) }
233
+ c.stub(:params) { HashWithIndifferentAccess.new({:f1 => 1}) }
234
234
  end
235
235
  }
236
236
  let(:collection) {
@@ -241,20 +241,20 @@ describe MagicGrid::Definition do
241
241
  end
242
242
  }
243
243
  it "should use the collection's post_filter method" do
244
- grid = MagicGrid::Definition.new([{sql: "foo"}],
244
+ grid = MagicGrid::Definition.new([{:sql => "foo"}],
245
245
  collection,
246
246
  controller,
247
- id: :grid, collection_post_filter: true)
247
+ :id => :grid, :collection_post_filter => true)
248
248
 
249
249
  data.should_receive(:post_filter).with().and_return([1,2,3,4])
250
250
  grid.collection.should == [1,2,3,4]
251
251
  grid.collection.should_not be_empty
252
252
  end
253
253
  it "can be disabled via the collection_post_filter option" do
254
- grid = MagicGrid::Definition.new([{sql: "foo"}],
254
+ grid = MagicGrid::Definition.new([{:sql => "foo"}],
255
255
  collection,
256
256
  controller,
257
- id: :grid, collection_post_filter: false)
257
+ :id => :grid, :collection_post_filter => false)
258
258
 
259
259
  data.should_not_receive(:post_filter)
260
260
  grid.collection.should == data
@@ -44,7 +44,7 @@ describe MagicGrid::Helpers do
44
44
  if_emtpy_string
45
45
  }
46
46
  end
47
- grid = magic_grid empty_collection, column_list, if_empty: callback
47
+ grid = magic_grid empty_collection, column_list, :if_empty => callback
48
48
  grid.should include(if_emtpy_string)
49
49
  end
50
50
  end
@@ -54,8 +54,8 @@ describe MagicGrid::Helpers do
54
54
  it "should not indicate there is no data" do
55
55
  should_not match(/if-empty/)
56
56
  end
57
- it { should match_select("td", text: "1") }
58
- it { should match_select("td", text: "2") }
57
+ it { should match_select("td", :text => "1") }
58
+ it { should match_select("td", :text => "2") }
59
59
  end
60
60
 
61
61
  context "when given a block" do
@@ -92,7 +92,7 @@ describe MagicGrid::Helpers do
92
92
  context "renders top and bottom pagers as told" do
93
93
  large_collection = (1..1000).to_a
94
94
 
95
- if Module.const_defined? :Kaminari
95
+ if defined? Kaminari
96
96
  def render(*args)
97
97
  "<nav class='pagination'><!-- paginate! --></nav>".html_safe
98
98
  end
@@ -100,9 +100,9 @@ describe MagicGrid::Helpers do
100
100
 
101
101
  it "should render an actual pager" do
102
102
  grid = magic_grid(large_collection, [:to_s])
103
- if Module.const_defined? :WillPaginate
103
+ if $will_paginate
104
104
  grid.should match_select("tfoot>tr>td.magic-pager>div.pagination", 1)
105
- elsif Module.const_defined? :Kaminari
105
+ elsif $kaminari
106
106
  grid.should match_select("tfoot>tr>td.magic-pager>nav.pagination", 1)
107
107
  else
108
108
  grid.should match_select("tfoot>tr>td.magic-pager", /INSTALL/)
@@ -114,12 +114,12 @@ describe MagicGrid::Helpers do
114
114
  grid.should match_select("tfoot>tr>td.magic-pager", 1)
115
115
  end
116
116
  it "should render a top and bottom pager when told" do
117
- grid = magic_grid( large_collection, [:to_s], top_pager: true )
117
+ grid = magic_grid( large_collection, [:to_s], :top_pager => true )
118
118
  grid.should match_select("thead>tr>td.magic-pager", 1)
119
119
  grid.should match_select("tfoot>tr>td.magic-pager", 1)
120
120
  end
121
121
  it "should render only a top pager when told" do
122
- grid = magic_grid( large_collection, [:to_s], top_pager: true, bottom_pager: false )
122
+ grid = magic_grid( large_collection, [:to_s], :top_pager => true, :bottom_pager => false )
123
123
  grid.should match_select("thead>tr>td.magic-pager", 1)
124
124
  grid.should match_select("tfoot>tr>td.magic-pager", 0)
125
125
  end
@@ -132,7 +132,7 @@ describe MagicGrid::Helpers do
132
132
  end
133
133
  }
134
134
  it "should only render one spinner" do
135
- grid = magic_grid(searchabe_collection, column_list, searchable: [:some_col])
135
+ grid = magic_grid(searchabe_collection, column_list, :searchable => [:some_col])
136
136
  grid.should match_select("td.searcher", 1)
137
137
  grid.should match_select("td.magic-pager", 1)
138
138
  grid.should match_select(".magic_grid_spinner", 1)
@@ -146,7 +146,7 @@ describe MagicGrid::Helpers do
146
146
  end
147
147
  }
148
148
  it "should render a search bar when asked" do
149
- grid = magic_grid(searchabe_collection, column_list, searchable: [:some_col])
149
+ grid = magic_grid(searchabe_collection, column_list, :searchable => [:some_col])
150
150
  grid.should match_select('input[type=search]')
151
151
  end
152
152
 
@@ -154,13 +154,13 @@ describe MagicGrid::Helpers do
154
154
  let(:search_param) { 'foobar' }
155
155
  let(:controller) {
156
156
  make_controller.tap { |c|
157
- c.stub(:params) { {grid_id_q: search_param} }
157
+ c.stub(:params) { {:grid_id_q => search_param} }
158
158
  }
159
159
  }
160
160
  it "should search a searchable collection when there are search params" do
161
161
  collection = (1..1000).to_a
162
162
  collection.should_receive(:search).with(search_param) { collection }
163
- grid = magic_grid(collection, column_list, id: "grid_id", searchable: [:some_col])
163
+ grid = magic_grid(collection, column_list, :id => "grid_id", :searchable => [:some_col])
164
164
  grid.should match_select('input[type=search]')
165
165
  end
166
166
 
@@ -172,9 +172,9 @@ describe MagicGrid::Helpers do
172
172
 
173
173
  collection = fake_active_record_collection(table_name)
174
174
  collection.should_receive(:where).
175
- with("#{search_sql} LIKE :search", {search: "%#{search_param}%"})
175
+ with("#{search_sql} LIKE :search", {:search => "%#{search_param}%"})
176
176
 
177
- grid = magic_grid(collection, column_list, id: "grid_id", searchable: [search_col])
177
+ grid = magic_grid(collection, column_list, :id => "grid_id", :searchable => [search_col])
178
178
  end
179
179
 
180
180
  it "should use custom sql from column for call to where when given" do
@@ -184,14 +184,14 @@ describe MagicGrid::Helpers do
184
184
 
185
185
  collection = fake_active_record_collection(table_name)
186
186
  collection.should_receive(:where).
187
- with("#{search_sql} LIKE :search", {search: "%#{search_param}%"})
187
+ with("#{search_sql} LIKE :search", {:search => "%#{search_param}%"})
188
188
 
189
189
  magic_grid(collection,
190
190
  [ :name,
191
191
  :description,
192
- {col: search_col, sql: search_sql}
192
+ {:col => search_col, :sql => search_sql}
193
193
  ],
194
- id: "grid_id", searchable: [search_col])
194
+ :id => "grid_id", :searchable => [search_col])
195
195
  end
196
196
 
197
197
  it "should use column number to look up search column" do
@@ -201,14 +201,14 @@ describe MagicGrid::Helpers do
201
201
 
202
202
  collection = fake_active_record_collection(table_name)
203
203
  collection.should_receive(:where).
204
- with("#{search_sql} LIKE :search", {search: "%#{search_param}%"})
204
+ with("#{search_sql} LIKE :search", {:search => "%#{search_param}%"})
205
205
 
206
206
  magic_grid(collection,
207
207
  [ :name,
208
208
  :description,
209
- {col: search_col, sql: search_sql}
209
+ {:col => search_col, :sql => search_sql}
210
210
  ],
211
- id: "grid_id", searchable: [2])
211
+ :id => "grid_id", :searchable => [2])
212
212
  end
213
213
 
214
214
  it "should use custom sql for call to where when given" do
@@ -219,14 +219,14 @@ describe MagicGrid::Helpers do
219
219
 
220
220
  collection = fake_active_record_collection(table_name)
221
221
  collection.should_receive(:where).
222
- with("#{search_sql} LIKE :search", {search: "%#{search_param}%"})
222
+ with("#{search_sql} LIKE :search", {:search => "%#{search_param}%"})
223
223
 
224
224
  magic_grid(collection,
225
225
  [ :name,
226
226
  :description,
227
- {col: search_col, sql: search_sql}
227
+ {:col => search_col, :sql => search_sql}
228
228
  ],
229
- id: "grid_id", searchable: [custom_search_col])
229
+ :id => "grid_id", :searchable => [custom_search_col])
230
230
  end
231
231
 
232
232
  it "should fail when given bad searchable columns" do
@@ -236,7 +236,7 @@ describe MagicGrid::Helpers do
236
236
  expect {
237
237
  magic_grid(collection,
238
238
  [ :name, :description],
239
- id: "grid_id", searchable: [nil])
239
+ :id => "grid_id", :searchable => [nil])
240
240
  }.to raise_error
241
241
  end
242
242
 
@@ -253,7 +253,7 @@ describe MagicGrid::Helpers do
253
253
  end
254
254
 
255
255
  expect {
256
- magic_grid(collection, column_list, id: "grid_id", searchable: [search_col])
256
+ magic_grid(collection, column_list, :id => "grid_id", :searchable => [search_col])
257
257
  }.to_not raise_error
258
258
  end
259
259
  end
@@ -20,7 +20,7 @@ describe MagicGrid::HtmlGrid do
20
20
  callable = double.tap do |c|
21
21
  c.should_receive(:call).with( record ) { tracer }
22
22
  end
23
- cols = [ {col: 'Col', to_s: callable} ]
23
+ cols = [ {:col => 'Col', :to_s => callable} ]
24
24
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols), self
25
25
  grid.grid_row( record ).should include(tracer)
26
26
  end
@@ -29,7 +29,7 @@ describe MagicGrid::HtmlGrid do
29
29
  callable = double.tap do |c|
30
30
  c.should_receive(:call).with( record ) { tracer }
31
31
  end
32
- cols = [ {col: callable, label: "Column"} ]
32
+ cols = [ {:col => callable, :label => "Column"} ]
33
33
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols), self
34
34
  grid.grid_row( record ).should include(tracer)
35
35
  end
@@ -40,14 +40,14 @@ describe MagicGrid::HtmlGrid do
40
40
 
41
41
  it "should use :to_s as a method on record if it responds to it" do
42
42
  record.should_receive(:some_inconceivable_method_name) { tracer }
43
- cols = [ {col: :some_col, to_s: :some_inconceivable_method_name} ]
43
+ cols = [ {:col => :some_col, :to_s => :some_inconceivable_method_name} ]
44
44
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols), self
45
45
  grid.grid_row( record ).should include(tracer)
46
46
  end
47
47
 
48
48
  it "should use :col as a method on record if it responds to it" do
49
49
  record.should_receive(:some_inconceivable_method_name) { tracer }
50
- cols = [ {col: :some_inconceivable_method_name} ]
50
+ cols = [ {:col => :some_inconceivable_method_name} ]
51
51
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols), self
52
52
  grid.grid_row( record ).should include(tracer)
53
53
  end
@@ -63,13 +63,13 @@ describe MagicGrid::HtmlGrid do
63
63
  end
64
64
  it "should use :label if no :sql is given" do
65
65
  title = "A String"
66
- cols = [{label: title}]
66
+ cols = [{:label => title}]
67
67
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols), self
68
68
  grid.magic_column_headers.should include(title)
69
69
  end
70
70
  it "should make a sortable header if :sql is specified" do
71
71
  tracer = "A MAGIC BULL??"
72
- col = {sql: 'some_col'}
72
+ col = {:sql => 'some_col'}
73
73
  cols = [col]
74
74
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols), self
75
75
  # TODO: check parameters to sortable_header
@@ -80,7 +80,7 @@ describe MagicGrid::HtmlGrid do
80
80
  end
81
81
 
82
82
  describe "#searcher_input" do
83
- searchable_opts = { needs_searcher: true }
83
+ searchable_opts = { :needs_searcher => true }
84
84
  it "renders a search field" do
85
85
  cols = [:some_col]
86
86
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols, nil, nil, searchable_opts), self
@@ -89,10 +89,10 @@ describe MagicGrid::HtmlGrid do
89
89
  it "renders a search button if told to" do
90
90
  tracer = "ZOMG! A BUTTON!"
91
91
  cols = [:some_col]
92
- opts = searchable_opts.merge(search_button: true,
93
- searcher_button: tracer)
92
+ opts = searchable_opts.merge(:search_button => true,
93
+ :searcher_button => tracer)
94
94
  grid = MagicGrid::HtmlGrid.new MagicGrid::Definition.new(cols, nil, nil, opts), self
95
- grid.searcher_input.should match_select("button", text: tracer)
95
+ grid.searcher_input.should match_select("button", :text => tracer)
96
96
  end
97
97
  end
98
98
 
@@ -114,4 +114,31 @@ describe MagicGrid::HtmlGrid do
114
114
  subject.order_class(2).should == 'sort-none'
115
115
  end
116
116
  end
117
+
118
+ describe "#magic_pager" do
119
+ let(:definition) { MagicGrid::Definition.new(column_list) }
120
+ let(:collection) { definition.magic_collection }
121
+ it "should use will_paginate if available" do
122
+ view = double.tap { |v|
123
+ v.should_receive(:will_paginate).
124
+ with(collection.collection, {}).
125
+ and_return("WillPaginate was used!")
126
+ }
127
+ grid = MagicGrid::HtmlGrid.new(definition, view)
128
+ grid.magic_pager(collection).should == "WillPaginate was used!"
129
+ end
130
+ it "should use paginate if available and will_paginate is not" do
131
+ view = double.tap { |v|
132
+ v.should_receive(:paginate).
133
+ with(collection.collection, {}).
134
+ and_return("#paginate was used!")
135
+ }
136
+ grid = MagicGrid::HtmlGrid.new(definition, view)
137
+ grid.magic_pager(collection).should == "#paginate was used!"
138
+ end
139
+ it "should leave a comment for the dev if paginate and will_paginate are both missing" do
140
+ grid = MagicGrid::HtmlGrid.new(definition, double)
141
+ grid.magic_pager(collection).should =~ /INSTALL WillPaginate or Kaminari/
142
+ end
143
+ end
117
144
  end