Skip to content

Commit 07fa8e1

Browse files
authored
Merge pull request #426 from wayhomeservices/searchable-tests
Adding searchable: false test cases
2 parents ff85109 + 74da2c5 commit 07fa8e1

File tree

7 files changed

+51
-14
lines changed

7 files changed

+51
-14
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# CHANGELOG
22

3+
* Implementing `searchable: false` tests
4+
35
## 1.5.0 (2024-04-08)
46

57
* Drop support of Rails 5.2

spec/ajax-datatables-rails/datatable/column_spec.rb

+8
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@
128128
end
129129
end
130130

131+
describe 'unsearchable column' do
132+
let(:column) { datatable.datatable.columns.find{ |c| c.data == 'email_hash' } }
133+
134+
it 'is not searchable' do
135+
expect(column.searchable?).to eql(false)
136+
end
137+
end
138+
131139
describe '#formatter' do
132140
let(:datatable) { DatatableWithFormater.new(sample_params) }
133141
let(:column) { datatable.datatable.columns.find { |c| c.data == 'last_name' } }

spec/ajax-datatables-rails/datatable/datatable_spec.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
end
4141

4242
shared_examples 'columns methods' do
43-
it 'has 7 columns' do
44-
expect(datatable.columns.count).to eq(7)
43+
it 'has 8 columns' do
44+
expect(datatable.columns.count).to eq(8)
4545
end
4646

4747
it 'child class' do

spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb

+23-12
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,23 @@
1212
expect { datatable.filter_records }.to raise_error(ArgumentError)
1313
end
1414

15-
it 'performs a simple search first' do
16-
datatable.params[:search] = { value: 'msmith' }
17-
expect(datatable).to receive(:build_conditions_for_datatable)
18-
datatable.filter_records(records)
15+
context 'with simple search' do
16+
before do
17+
datatable.params[:search] = { value: 'msmith' }
18+
end
19+
20+
it 'performs a simple search first' do
21+
expect(datatable).to receive(:build_conditions_for_datatable)
22+
datatable.filter_records(records)
23+
end
24+
25+
it 'does not search unsearchable fields' do
26+
criteria = datatable.filter_records(records)
27+
expect(criteria.to_sql).not_to include('email_hash')
28+
end
1929
end
2030

31+
2132
it 'performs a composite search second' do
2233
datatable.params[:search] = { value: '' }
2334
expect(datatable).to receive(:build_conditions_for_selected_columns)
@@ -246,7 +257,7 @@
246257

247258
context 'when range is empty' do
248259
it 'does not filter records' do
249-
datatable.params[:columns]['6'][:search][:value] = '-'
260+
datatable.params[:columns]['7'][:search][:value] = '-'
250261
expect(datatable.data.size).to eq 2
251262
item = datatable.data.first
252263
expect(item[:last_name]).to eq 'Doe'
@@ -255,21 +266,21 @@
255266

256267
context 'when start date is filled' do
257268
it 'filters records created after this date' do
258-
datatable.params[:columns]['6'][:search][:value] = '31/12/1999-'
269+
datatable.params[:columns]['7'][:search][:value] = '31/12/1999-'
259270
expect(datatable.data.size).to eq 2
260271
end
261272
end
262273

263274
context 'when end date is filled' do
264275
it 'filters records created before this date' do
265-
datatable.params[:columns]['6'][:search][:value] = '-31/12/1999'
276+
datatable.params[:columns]['7'][:search][:value] = '-31/12/1999'
266277
expect(datatable.data.size).to eq 0
267278
end
268279
end
269280

270281
context 'when both date are filled' do
271282
it 'filters records created between the range' do
272-
datatable.params[:columns]['6'][:search][:value] = '01/12/1999-15/01/2000'
283+
datatable.params[:columns]['7'][:search][:value] = '01/12/1999-15/01/2000'
273284
expect(datatable.data.size).to eq 1
274285
end
275286
end
@@ -278,7 +289,7 @@
278289
context 'when range is empty' do
279290
it 'filters records' do
280291
datatable.params[:columns]['0'][:search][:value] = 'doe'
281-
datatable.params[:columns]['6'][:search][:value] = '-'
292+
datatable.params[:columns]['7'][:search][:value] = '-'
282293
expect(datatable.data.size).to eq 1
283294
item = datatable.data.first
284295
expect(item[:last_name]).to eq 'Doe'
@@ -288,7 +299,7 @@
288299
context 'when start date is filled' do
289300
it 'filters records' do
290301
datatable.params[:columns]['0'][:search][:value] = 'doe'
291-
datatable.params[:columns]['6'][:search][:value] = '01/12/1999-'
302+
datatable.params[:columns]['7'][:search][:value] = '01/12/1999-'
292303
expect(datatable.data.size).to eq 1
293304
item = datatable.data.first
294305
expect(item[:last_name]).to eq 'Doe'
@@ -298,7 +309,7 @@
298309
context 'when end date is filled' do
299310
it 'filters records' do
300311
datatable.params[:columns]['0'][:search][:value] = 'doe'
301-
datatable.params[:columns]['6'][:search][:value] = '-15/01/2000'
312+
datatable.params[:columns]['7'][:search][:value] = '-15/01/2000'
302313
expect(datatable.data.size).to eq 1
303314
item = datatable.data.first
304315
expect(item[:last_name]).to eq 'Doe'
@@ -308,7 +319,7 @@
308319
context 'when both date are filled' do
309320
it 'filters records' do
310321
datatable.params[:columns]['0'][:search][:value] = 'doe'
311-
datatable.params[:columns]['6'][:search][:value] = '01/12/1999-15/01/2000'
322+
datatable.params[:columns]['7'][:search][:value] = '01/12/1999-15/01/2000'
312323
expect(datatable.data.size).to eq 1
313324
item = datatable.data.first
314325
expect(item[:last_name]).to eq 'Doe'

spec/support/datatables/complex_datatable.rb

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ def view_columns
99
last_name: { source: 'User.last_name' },
1010
full_name: { source: 'full_name' },
1111
post_id: { source: 'User.post_id', orderable: false },
12+
email_hash: { source: 'email_hash', searchable: false },
1213
created_at: { source: 'User.created_at' },
1314
}
1415
end
@@ -22,6 +23,7 @@ def data
2223
last_name: record.last_name,
2324
full_name: record.full_name,
2425
post_id: record.post_id,
26+
email_hash: record.email_hash,
2527
created_at: record.created_at,
2628
}
2729
end

spec/support/helpers/params.rb

+6
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ def sample_params
4343
}
4444
},
4545
'6' => {
46+
'data' => 'email_hash', 'name' => '', 'searchable' => 'false', 'orderable' => 'true',
47+
'search' => {
48+
'value' => '', 'regex' => 'false'
49+
}
50+
},
51+
'7' => {
4652
'data' => 'created_at', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
4753
'search' => {
4854
'value' => '', 'regex' => 'false'

spec/support/models/user.rb

+8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
# frozen_string_literal: true
22

3+
require 'digest'
4+
35
class User < ActiveRecord::Base
46
def full_name
57
"#{first_name} #{last_name}"
68
end
9+
10+
def email_hash
11+
return nil if email.nil?
12+
13+
Digest::SHA256.hexdigest email
14+
end
715
end

0 commit comments

Comments
 (0)