ajax-datatables-rails 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +15 -15
- data/bin/bundle +114 -0
- data/doc/migrate.md +1 -1
- data/lib/ajax-datatables-rails/base.rb +1 -1
- data/lib/ajax-datatables-rails/datatable/column/search.rb +7 -3
- data/lib/ajax-datatables-rails/datatable/datatable.rb +0 -1
- data/lib/ajax-datatables-rails/version.rb +1 -1
- data/spec/ajax-datatables-rails/base_spec.rb +39 -19
- data/spec/ajax-datatables-rails/datatable/column_spec.rb +30 -33
- data/spec/ajax-datatables-rails/datatable/datatable_spec.rb +11 -9
- data/spec/ajax-datatables-rails/datatable/simple_order_spec.rb +4 -2
- data/spec/ajax-datatables-rails/datatable/simple_search_spec.rb +4 -2
- data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +61 -94
- data/spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb +4 -2
- data/spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb +5 -3
- data/spec/factories/user.rb +3 -1
- data/spec/spec_helper.rb +27 -11
- data/spec/support/datatables/complex_datatable.rb +2 -0
- data/spec/support/datatables/complex_datatable_array.rb +2 -0
- data/spec/support/datatables/datatable_cond_date.rb +2 -0
- data/spec/support/datatables/datatable_cond_numeric.rb +2 -0
- data/spec/support/datatables/datatable_cond_proc.rb +2 -0
- data/spec/support/datatables/datatable_cond_string.rb +4 -2
- data/spec/support/datatables/datatable_cond_unknown.rb +2 -0
- data/spec/support/datatables/datatable_order_nulls_last.rb +2 -0
- data/spec/support/helpers/params.rb +7 -5
- data/spec/support/models/user.rb +2 -0
- data/spec/support/schema.rb +3 -1
- metadata +4 -4
- data/spec/ajax-datatables-rails/orm/active_record_spec.rb +0 -24
@@ -1,23 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
|
-
describe AjaxDatatablesRails::Datatable::Datatable do
|
5
|
+
RSpec.describe AjaxDatatablesRails::Datatable::Datatable do
|
4
6
|
|
5
7
|
let(:datatable) { ComplexDatatable.new(sample_params).datatable }
|
6
8
|
let(:datatable_json) { ComplexDatatable.new(sample_params_json).datatable }
|
7
|
-
let(:order_option) { {'0'=>{'column'=>'0', 'dir'=>'asc'}, '1'=>{'column'=>'1', 'dir'=>'desc'}} }
|
8
|
-
let(:order_option_json) { [{'column'=>'0', 'dir'=>'asc'}, {'column'=>'1', 'dir'=>'desc'}] }
|
9
|
+
let(:order_option) { { '0' => { 'column' => '0', 'dir' => 'asc' }, '1' => { 'column' => '1', 'dir' => 'desc' } } }
|
10
|
+
let(:order_option_json) { [{ 'column' => '0', 'dir' => 'asc' }, { 'column' => '1', 'dir' => 'desc' }] }
|
9
11
|
|
10
12
|
shared_examples 'order methods' do
|
11
|
-
it '
|
13
|
+
it 'is orderable' do
|
12
14
|
expect(datatable.orderable?).to eq(true)
|
13
15
|
end
|
14
16
|
|
15
|
-
it '
|
17
|
+
it 'is not orderable' do
|
16
18
|
datatable.options[:order] = nil
|
17
19
|
expect(datatable.orderable?).to eq(false)
|
18
20
|
end
|
19
21
|
|
20
|
-
it '
|
22
|
+
it 'has 2 orderable columns' do
|
21
23
|
datatable.options[:order] = order_option
|
22
24
|
expect(datatable.orders.count).to eq(2)
|
23
25
|
end
|
@@ -38,7 +40,7 @@ describe AjaxDatatablesRails::Datatable::Datatable do
|
|
38
40
|
end
|
39
41
|
|
40
42
|
shared_examples 'columns methods' do
|
41
|
-
it '
|
43
|
+
it 'has 4 columns' do
|
42
44
|
expect(datatable.columns.count).to eq(6)
|
43
45
|
end
|
44
46
|
|
@@ -60,12 +62,12 @@ describe AjaxDatatablesRails::Datatable::Datatable do
|
|
60
62
|
end
|
61
63
|
|
62
64
|
describe 'search methods' do
|
63
|
-
it '
|
65
|
+
it 'is searchable' do
|
64
66
|
datatable.options[:search][:value] = 'atom'
|
65
67
|
expect(datatable.searchable?).to eq(true)
|
66
68
|
end
|
67
69
|
|
68
|
-
it '
|
70
|
+
it 'is not searchable' do
|
69
71
|
datatable.options[:search][:value] = nil
|
70
72
|
expect(datatable.searchable?).to eq(false)
|
71
73
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
|
-
describe AjaxDatatablesRails::Datatable::SimpleOrder do
|
5
|
+
RSpec.describe AjaxDatatablesRails::Datatable::SimpleOrder do
|
4
6
|
|
5
7
|
let(:parent) { ComplexDatatable.new(sample_params) }
|
6
8
|
let(:datatable) { parent.datatable }
|
7
|
-
let(:options) { ActiveSupport::HashWithIndifferentAccess.new({'column' => '1', 'dir' => 'desc'}) }
|
9
|
+
let(:options) { ActiveSupport::HashWithIndifferentAccess.new({ 'column' => '1', 'dir' => 'desc' }) }
|
8
10
|
let(:simple_order) { AjaxDatatablesRails::Datatable::SimpleOrder.new(datatable, options) }
|
9
11
|
|
10
12
|
describe 'option methods' do
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
|
-
describe AjaxDatatablesRails::Datatable::SimpleSearch do
|
5
|
+
RSpec.describe AjaxDatatablesRails::Datatable::SimpleSearch do
|
4
6
|
|
5
|
-
let(:options) { ActiveSupport::HashWithIndifferentAccess.new({'value' => 'search value', 'regex' => 'true'}) }
|
7
|
+
let(:options) { ActiveSupport::HashWithIndifferentAccess.new({ 'value' => 'search value', 'regex' => 'true' }) }
|
6
8
|
let(:simple_search) { AjaxDatatablesRails::Datatable::SimpleSearch.new(options) }
|
7
9
|
|
8
10
|
describe 'option methods' do
|
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
|
-
describe AjaxDatatablesRails::ORM::ActiveRecord do
|
5
|
+
RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
|
4
6
|
|
5
7
|
let(:datatable) { ComplexDatatable.new(sample_params) }
|
6
8
|
let(:records) { User.all }
|
7
9
|
|
8
10
|
describe '#filter_records' do
|
9
11
|
it 'requires a records collection as argument' do
|
10
|
-
expect { datatable.filter_records
|
12
|
+
expect { datatable.filter_records }.to raise_error(ArgumentError)
|
11
13
|
end
|
12
14
|
|
13
15
|
it 'performs a simple search first' do
|
@@ -24,14 +26,14 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
24
26
|
end
|
25
27
|
|
26
28
|
describe '#build_conditions' do
|
27
|
-
before
|
29
|
+
before do
|
28
30
|
create(:user, username: 'johndoe', email: 'johndoe@example.com')
|
29
31
|
create(:user, username: 'msmith', email: 'mary.smith@example.com')
|
30
32
|
create(:user, username: 'hsmith', email: 'henry.smith@example.net')
|
31
33
|
end
|
32
34
|
|
33
35
|
context 'with column and global search' do
|
34
|
-
before
|
36
|
+
before do
|
35
37
|
datatable.params[:search] = { value: 'example.com', regex: 'false' }
|
36
38
|
datatable.params[:columns]['0'][:search][:value] = 'smith'
|
37
39
|
end
|
@@ -47,7 +49,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
47
49
|
end
|
48
50
|
|
49
51
|
describe '#build_conditions_for_datatable' do
|
50
|
-
before
|
52
|
+
before do
|
51
53
|
create(:user, username: 'johndoe', email: 'johndoe@example.com')
|
52
54
|
create(:user, username: 'msmith', email: 'mary.smith@example.com')
|
53
55
|
end
|
@@ -66,12 +68,12 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
66
68
|
end
|
67
69
|
|
68
70
|
context 'when none of columns are connected' do
|
69
|
-
before
|
71
|
+
before do
|
70
72
|
allow(datatable).to receive(:searchable_columns) { [] }
|
71
73
|
end
|
72
74
|
|
73
75
|
context 'when search value is a string' do
|
74
|
-
before
|
76
|
+
before do
|
75
77
|
datatable.params[:search] = { value: 'msmith' }
|
76
78
|
end
|
77
79
|
|
@@ -87,7 +89,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
87
89
|
end
|
88
90
|
|
89
91
|
context 'when search value is space-separated string' do
|
90
|
-
before
|
92
|
+
before do
|
91
93
|
datatable.params[:search] = { value: 'foo bar' }
|
92
94
|
end
|
93
95
|
|
@@ -105,7 +107,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
105
107
|
|
106
108
|
context 'with search query' do
|
107
109
|
context 'when search value is a string' do
|
108
|
-
before
|
110
|
+
before do
|
109
111
|
datatable.params[:search] = { value: 'john', regex: 'false' }
|
110
112
|
end
|
111
113
|
|
@@ -118,7 +120,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
118
120
|
end
|
119
121
|
|
120
122
|
context 'when search value is space-separated string' do
|
121
|
-
before
|
123
|
+
before do
|
122
124
|
datatable.params[:search] = { value: 'john doe', regex: 'false' }
|
123
125
|
end
|
124
126
|
|
@@ -134,7 +136,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
134
136
|
context 'when column.search_query returns nil' do
|
135
137
|
let(:datatable) { DatatableCondUnknown.new(sample_params) }
|
136
138
|
|
137
|
-
before
|
139
|
+
before do
|
138
140
|
datatable.params[:search] = { value: 'john doe', regex: 'false' }
|
139
141
|
end
|
140
142
|
|
@@ -150,7 +152,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
150
152
|
end
|
151
153
|
|
152
154
|
describe '#build_conditions_for_selected_columns' do
|
153
|
-
before
|
155
|
+
before do
|
154
156
|
create(:user, username: 'johndoe', email: 'johndoe@example.com')
|
155
157
|
create(:user, username: 'msmith', email: 'mary.smith@example.com')
|
156
158
|
end
|
@@ -209,7 +211,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
209
211
|
end
|
210
212
|
|
211
213
|
context 'with search values in columns' do
|
212
|
-
before
|
214
|
+
before do
|
213
215
|
datatable.params[:columns]['0'][:search][:value] = 'doe'
|
214
216
|
end
|
215
217
|
|
@@ -227,13 +229,13 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
227
229
|
describe 'it can filter records with condition :date_range' do
|
228
230
|
let(:datatable) { DatatableCondDate.new(sample_params) }
|
229
231
|
|
230
|
-
before
|
232
|
+
before do
|
231
233
|
create(:user, username: 'johndoe', email: 'johndoe@example.com', last_name: 'Doe', created_at: '01/01/2000')
|
232
234
|
create(:user, username: 'msmith', email: 'mary.smith@example.com', last_name: 'Smith', created_at: '01/02/2000')
|
233
235
|
end
|
234
236
|
|
235
237
|
context 'when range is empty' do
|
236
|
-
it '
|
238
|
+
it 'does not filter records' do
|
237
239
|
datatable.params[:columns]['5'][:search][:value] = '-'
|
238
240
|
expect(datatable.data.size).to eq 2
|
239
241
|
item = datatable.data.first
|
@@ -242,21 +244,21 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
242
244
|
end
|
243
245
|
|
244
246
|
context 'when start date is filled' do
|
245
|
-
it '
|
247
|
+
it 'filters records created after this date' do
|
246
248
|
datatable.params[:columns]['5'][:search][:value] = '31/12/1999-'
|
247
249
|
expect(datatable.data.size).to eq 2
|
248
250
|
end
|
249
251
|
end
|
250
252
|
|
251
253
|
context 'when end date is filled' do
|
252
|
-
it '
|
254
|
+
it 'filters records created before this date' do
|
253
255
|
datatable.params[:columns]['5'][:search][:value] = '-31/12/1999'
|
254
256
|
expect(datatable.data.size).to eq 0
|
255
257
|
end
|
256
258
|
end
|
257
259
|
|
258
260
|
context 'when both date are filled' do
|
259
|
-
it '
|
261
|
+
it 'filters records created between the range' do
|
260
262
|
datatable.params[:columns]['5'][:search][:value] = '01/12/1999-15/01/2000'
|
261
263
|
expect(datatable.data.size).to eq 1
|
262
264
|
end
|
@@ -264,7 +266,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
264
266
|
|
265
267
|
context 'when another filter is active' do
|
266
268
|
context 'when range is empty' do
|
267
|
-
it '
|
269
|
+
it 'filters records' do
|
268
270
|
datatable.params[:columns]['0'][:search][:value] = 'doe'
|
269
271
|
datatable.params[:columns]['5'][:search][:value] = '-'
|
270
272
|
expect(datatable.data.size).to eq 1
|
@@ -274,7 +276,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
274
276
|
end
|
275
277
|
|
276
278
|
context 'when start date is filled' do
|
277
|
-
it '
|
279
|
+
it 'filters records' do
|
278
280
|
datatable.params[:columns]['0'][:search][:value] = 'doe'
|
279
281
|
datatable.params[:columns]['5'][:search][:value] = '01/12/1999-'
|
280
282
|
expect(datatable.data.size).to eq 1
|
@@ -284,7 +286,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
284
286
|
end
|
285
287
|
|
286
288
|
context 'when end date is filled' do
|
287
|
-
it '
|
289
|
+
it 'filters records' do
|
288
290
|
datatable.params[:columns]['0'][:search][:value] = 'doe'
|
289
291
|
datatable.params[:columns]['5'][:search][:value] = '-15/01/2000'
|
290
292
|
expect(datatable.data.size).to eq 1
|
@@ -294,7 +296,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
294
296
|
end
|
295
297
|
|
296
298
|
context 'when both date are filled' do
|
297
|
-
it '
|
299
|
+
it 'filters records' do
|
298
300
|
datatable.params[:columns]['0'][:search][:value] = 'doe'
|
299
301
|
datatable.params[:columns]['5'][:search][:value] = '01/12/1999-15/01/2000'
|
300
302
|
expect(datatable.data.size).to eq 1
|
@@ -307,15 +309,15 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
307
309
|
end
|
308
310
|
|
309
311
|
context 'numeric condition' do
|
312
|
+
before do
|
313
|
+
create(:user, first_name: 'john', post_id: 1)
|
314
|
+
create(:user, first_name: 'mary', post_id: 2)
|
315
|
+
end
|
316
|
+
|
310
317
|
describe 'it can filter records with condition :eq' do
|
311
318
|
let(:datatable) { DatatableCondEq.new(sample_params) }
|
312
319
|
|
313
|
-
|
314
|
-
create(:user, first_name: 'john', post_id: 1)
|
315
|
-
create(:user, first_name: 'mary', post_id: 2)
|
316
|
-
end
|
317
|
-
|
318
|
-
it 'should filter records matching' do
|
320
|
+
it 'filters records matching' do
|
319
321
|
datatable.params[:columns]['4'][:search][:value] = 1
|
320
322
|
expect(datatable.data.size).to eq 1
|
321
323
|
item = datatable.data.first
|
@@ -326,12 +328,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
326
328
|
describe 'it can filter records with condition :not_eq' do
|
327
329
|
let(:datatable) { DatatableCondNotEq.new(sample_params) }
|
328
330
|
|
329
|
-
|
330
|
-
create(:user, first_name: 'john', post_id: 1)
|
331
|
-
create(:user, first_name: 'mary', post_id: 2)
|
332
|
-
end
|
333
|
-
|
334
|
-
it 'should filter records matching' do
|
331
|
+
it 'filters records matching' do
|
335
332
|
datatable.params[:columns]['4'][:search][:value] = 1
|
336
333
|
expect(datatable.data.size).to eq 1
|
337
334
|
item = datatable.data.first
|
@@ -342,12 +339,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
342
339
|
describe 'it can filter records with condition :lt' do
|
343
340
|
let(:datatable) { DatatableCondLt.new(sample_params) }
|
344
341
|
|
345
|
-
|
346
|
-
create(:user, first_name: 'john', post_id: 1)
|
347
|
-
create(:user, first_name: 'mary', post_id: 2)
|
348
|
-
end
|
349
|
-
|
350
|
-
it 'should filter records matching' do
|
342
|
+
it 'filters records matching' do
|
351
343
|
datatable.params[:columns]['4'][:search][:value] = 2
|
352
344
|
expect(datatable.data.size).to eq 1
|
353
345
|
item = datatable.data.first
|
@@ -358,12 +350,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
358
350
|
describe 'it can filter records with condition :gt' do
|
359
351
|
let(:datatable) { DatatableCondGt.new(sample_params) }
|
360
352
|
|
361
|
-
|
362
|
-
create(:user, first_name: 'john', post_id: 1)
|
363
|
-
create(:user, first_name: 'mary', post_id: 2)
|
364
|
-
end
|
365
|
-
|
366
|
-
it 'should filter records matching' do
|
353
|
+
it 'filters records matching' do
|
367
354
|
datatable.params[:columns]['4'][:search][:value] = 1
|
368
355
|
expect(datatable.data.size).to eq 1
|
369
356
|
item = datatable.data.first
|
@@ -374,12 +361,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
374
361
|
describe 'it can filter records with condition :lteq' do
|
375
362
|
let(:datatable) { DatatableCondLteq.new(sample_params) }
|
376
363
|
|
377
|
-
|
378
|
-
create(:user, first_name: 'john', post_id: 1)
|
379
|
-
create(:user, first_name: 'mary', post_id: 2)
|
380
|
-
end
|
381
|
-
|
382
|
-
it 'should filter records matching' do
|
364
|
+
it 'filters records matching' do
|
383
365
|
datatable.params[:columns]['4'][:search][:value] = 2
|
384
366
|
expect(datatable.data.size).to eq 2
|
385
367
|
end
|
@@ -388,12 +370,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
388
370
|
describe 'it can filter records with condition :gteq' do
|
389
371
|
let(:datatable) { DatatableCondGteq.new(sample_params) }
|
390
372
|
|
391
|
-
|
392
|
-
create(:user, first_name: 'john', post_id: 1)
|
393
|
-
create(:user, first_name: 'mary', post_id: 2)
|
394
|
-
end
|
395
|
-
|
396
|
-
it 'should filter records matching' do
|
373
|
+
it 'filters records matching' do
|
397
374
|
datatable.params[:columns]['4'][:search][:value] = 1
|
398
375
|
expect(datatable.data.size).to eq 2
|
399
376
|
end
|
@@ -402,12 +379,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
402
379
|
describe 'it can filter records with condition :in' do
|
403
380
|
let(:datatable) { DatatableCondIn.new(sample_params) }
|
404
381
|
|
405
|
-
|
406
|
-
create(:user, first_name: 'john', post_id: 1)
|
407
|
-
create(:user, first_name: 'mary', post_id: 2)
|
408
|
-
end
|
409
|
-
|
410
|
-
it 'should filter records matching' do
|
382
|
+
it 'filters records matching' do
|
411
383
|
datatable.params[:columns]['4'][:search][:value] = [1]
|
412
384
|
expect(datatable.data.size).to eq 1
|
413
385
|
item = datatable.data.first
|
@@ -418,12 +390,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
418
390
|
describe 'it can filter records with condition :in with regex' do
|
419
391
|
let(:datatable) { DatatableCondInWithRegex.new(sample_params) }
|
420
392
|
|
421
|
-
|
422
|
-
create(:user, first_name: 'john', post_id: 1)
|
423
|
-
create(:user, first_name: 'mary', post_id: 2)
|
424
|
-
end
|
425
|
-
|
426
|
-
it 'should filter records matching' do
|
393
|
+
it 'filters records matching' do
|
427
394
|
datatable.params[:columns]['4'][:search][:value] = '1|2'
|
428
395
|
datatable.params[:order]['0'] = { column: '4', dir: 'asc' }
|
429
396
|
expect(datatable.data.size).to eq 2
|
@@ -434,10 +401,10 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
434
401
|
|
435
402
|
describe 'Integer overflows' do
|
436
403
|
let(:datatable) { DatatableCondEq.new(sample_params) }
|
437
|
-
let(:largest_postgresql_integer_value) {
|
438
|
-
let(:smallest_postgresql_integer_value) { -
|
404
|
+
let(:largest_postgresql_integer_value) { 2_147_483_647 }
|
405
|
+
let(:smallest_postgresql_integer_value) { -2_147_483_648 }
|
439
406
|
|
440
|
-
before
|
407
|
+
before do
|
441
408
|
create(:user, first_name: 'john', post_id: 1)
|
442
409
|
create(:user, first_name: 'mary', post_id: 2)
|
443
410
|
create(:user, first_name: 'phil', post_id: largest_postgresql_integer_value)
|
@@ -464,13 +431,13 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
464
431
|
describe 'it can filter records with lambda/proc condition' do
|
465
432
|
let(:datatable) { DatatableCondProc.new(sample_params) }
|
466
433
|
|
467
|
-
before
|
434
|
+
before do
|
468
435
|
create(:user, username: 'johndoe', email: 'johndoe@example.com')
|
469
436
|
create(:user, username: 'johndie', email: 'johndie@example.com')
|
470
437
|
create(:user, username: 'msmith', email: 'mary.smith@example.com')
|
471
438
|
end
|
472
439
|
|
473
|
-
it '
|
440
|
+
it 'filters records matching' do
|
474
441
|
datatable.params[:columns]['0'][:search][:value] = 'john'
|
475
442
|
expect(datatable.data.size).to eq 2
|
476
443
|
item = datatable.data.first
|
@@ -483,12 +450,12 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
483
450
|
describe 'it can filter records with condition :start_with' do
|
484
451
|
let(:datatable) { DatatableCondStartWith.new(sample_params) }
|
485
452
|
|
486
|
-
before
|
453
|
+
before do
|
487
454
|
create(:user, first_name: 'John')
|
488
455
|
create(:user, first_name: 'Mary')
|
489
456
|
end
|
490
457
|
|
491
|
-
it '
|
458
|
+
it 'filters records matching' do
|
492
459
|
datatable.params[:columns]['2'][:search][:value] = 'Jo'
|
493
460
|
expect(datatable.data.size).to eq 1
|
494
461
|
item = datatable.data.first
|
@@ -499,14 +466,14 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
499
466
|
describe 'it can filter records with condition :end_with' do
|
500
467
|
let(:datatable) { DatatableCondEndWith.new(sample_params) }
|
501
468
|
|
502
|
-
before
|
469
|
+
before do
|
503
470
|
create(:user, last_name: 'JOHN')
|
504
471
|
create(:user, last_name: 'MARY')
|
505
472
|
end
|
506
473
|
|
507
474
|
if ENV['DB_ADAPTER'] == 'oracle_enhanced'
|
508
475
|
context 'when db_adapter is oracleenhanced' do
|
509
|
-
it '
|
476
|
+
it 'filters records matching' do
|
510
477
|
datatable.params[:columns]['3'][:search][:value] = 'RY'
|
511
478
|
expect(datatable.data.size).to eq 1
|
512
479
|
item = datatable.data.first
|
@@ -514,7 +481,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
514
481
|
end
|
515
482
|
end
|
516
483
|
else
|
517
|
-
it '
|
484
|
+
it 'filters records matching' do
|
518
485
|
datatable.params[:columns]['3'][:search][:value] = 'ry'
|
519
486
|
expect(datatable.data.size).to eq 1
|
520
487
|
item = datatable.data.first
|
@@ -526,12 +493,12 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
526
493
|
describe 'it can filter records with condition :like' do
|
527
494
|
let(:datatable) { DatatableCondLike.new(sample_params) }
|
528
495
|
|
529
|
-
before
|
496
|
+
before do
|
530
497
|
create(:user, email: 'john@foo.com')
|
531
498
|
create(:user, email: 'mary@bar.com')
|
532
499
|
end
|
533
500
|
|
534
|
-
it '
|
501
|
+
it 'filters records matching' do
|
535
502
|
datatable.params[:columns]['1'][:search][:value] = 'foo'
|
536
503
|
expect(datatable.data.size).to eq 1
|
537
504
|
item = datatable.data.first
|
@@ -542,12 +509,12 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
542
509
|
describe 'it can filter records with condition :string_eq' do
|
543
510
|
let(:datatable) { DatatableCondStringEq.new(sample_params) }
|
544
511
|
|
545
|
-
before
|
512
|
+
before do
|
546
513
|
create(:user, email: 'john@foo.com')
|
547
514
|
create(:user, email: 'mary@bar.com')
|
548
515
|
end
|
549
516
|
|
550
|
-
it '
|
517
|
+
it 'filters records matching' do
|
551
518
|
datatable.params[:columns]['1'][:search][:value] = 'john@foo.com'
|
552
519
|
expect(datatable.data.size).to eq 1
|
553
520
|
item = datatable.data.first
|
@@ -558,20 +525,20 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
558
525
|
describe 'it can filter records with condition :string_in' do
|
559
526
|
let(:datatable) { DatatableCondStringIn.new(sample_params) }
|
560
527
|
|
561
|
-
before
|
528
|
+
before do
|
562
529
|
create(:user, email: 'john@foo.com')
|
563
530
|
create(:user, email: 'mary@bar.com')
|
564
531
|
create(:user, email: 'henry@baz.com')
|
565
532
|
end
|
566
533
|
|
567
|
-
it '
|
534
|
+
it 'filters records matching' do
|
568
535
|
datatable.params[:columns]['1'][:search][:value] = 'john@foo.com'
|
569
536
|
expect(datatable.data.size).to eq 1
|
570
537
|
item = datatable.data.first
|
571
538
|
expect(item[:email]).to eq 'john@foo.com'
|
572
539
|
end
|
573
540
|
|
574
|
-
it '
|
541
|
+
it 'filters records matching with multiple' do
|
575
542
|
datatable.params[:columns]['1'][:search][:value] = 'john@foo.com|henry@baz.com'
|
576
543
|
expect(datatable.data.size).to eq 2
|
577
544
|
items = datatable.data.sort_by { |h| h[:email] }
|
@@ -581,7 +548,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
581
548
|
expect(item_last[:email]).to eq 'john@foo.com'
|
582
549
|
end
|
583
550
|
|
584
|
-
it '
|
551
|
+
it 'filters records matching with multiple contains not found' do
|
585
552
|
datatable.params[:columns]['1'][:search][:value] = 'john@foo.com|henry_not@baz.com'
|
586
553
|
expect(datatable.data.size).to eq 1
|
587
554
|
item = datatable.data.first
|
@@ -592,13 +559,13 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
592
559
|
describe 'it can filter records with condition :null_value' do
|
593
560
|
let(:datatable) { DatatableCondNullValue.new(sample_params) }
|
594
561
|
|
595
|
-
before
|
562
|
+
before do
|
596
563
|
create(:user, first_name: 'john', email: 'foo@bar.com')
|
597
564
|
create(:user, first_name: 'mary', email: nil)
|
598
565
|
end
|
599
566
|
|
600
567
|
context 'when condition is NULL' do
|
601
|
-
it '
|
568
|
+
it 'filters records matching' do
|
602
569
|
datatable.params[:columns]['1'][:search][:value] = 'NULL'
|
603
570
|
expect(datatable.data.size).to eq 1
|
604
571
|
item = datatable.data.first
|
@@ -607,7 +574,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
607
574
|
end
|
608
575
|
|
609
576
|
context 'when condition is !NULL' do
|
610
|
-
it '
|
577
|
+
it 'filters records matching' do
|
611
578
|
datatable.params[:columns]['1'][:search][:value] = '!NULL'
|
612
579
|
expect(datatable.data.size).to eq 1
|
613
580
|
item = datatable.data.first
|
@@ -620,11 +587,11 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
620
587
|
context 'unknown condition' do
|
621
588
|
let(:datatable) { DatatableCondUnknown.new(sample_params) }
|
622
589
|
|
623
|
-
before
|
590
|
+
before do
|
624
591
|
datatable.params[:search] = { value: 'john doe', regex: 'false' }
|
625
592
|
end
|
626
593
|
|
627
|
-
it '
|
594
|
+
it 'raises error' do
|
628
595
|
expect {
|
629
596
|
datatable.data.size
|
630
597
|
}.to raise_error(AjaxDatatablesRails::Error::InvalidSearchCondition).with_message('foo')
|
@@ -635,7 +602,7 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
635
602
|
describe 'formatter option' do
|
636
603
|
let(:datatable) { DatatableWithFormater.new(sample_params) }
|
637
604
|
|
638
|
-
before
|
605
|
+
before do
|
639
606
|
create(:user, username: 'johndoe', email: 'johndoe@example.com', last_name: 'DOE')
|
640
607
|
create(:user, username: 'msmith', email: 'mary.smith@example.com', last_name: 'SMITH')
|
641
608
|
datatable.params[:columns]['3'][:search][:value] = 'doe'
|