Skip to content

Commit 720048d

Browse files
author
Jonathan Chan
committed
added full specs for searchable false functionality
1 parent 3494d6a commit 720048d

File tree

7 files changed

+37
-17
lines changed

7 files changed

+37
-17
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# CHANGELOG
22

3-
* Implementing `searchable: false` functionality
3+
* Implementing `searchable: false` tests
44

55
## 1.4.0 (2022-12-18)
66

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
end
128128
end
129129
end
130-
130+
131131
describe 'unsearchable column' do
132132
let(:column) { datatable.datatable.columns.find{ |c| c.data == 'email_hash' } }
133133

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)
@@ -236,7 +247,7 @@
236247

237248
context 'when range is empty' do
238249
it 'does not filter records' do
239-
datatable.params[:columns]['6'][:search][:value] = '-'
250+
datatable.params[:columns]['7'][:search][:value] = '-'
240251
expect(datatable.data.size).to eq 2
241252
item = datatable.data.first
242253
expect(item[:last_name]).to eq 'Doe'
@@ -245,21 +256,21 @@
245256

246257
context 'when start date is filled' do
247258
it 'filters records created after this date' do
248-
datatable.params[:columns]['6'][:search][:value] = '31/12/1999-'
259+
datatable.params[:columns]['7'][:search][:value] = '31/12/1999-'
249260
expect(datatable.data.size).to eq 2
250261
end
251262
end
252263

253264
context 'when end date is filled' do
254265
it 'filters records created before this date' do
255-
datatable.params[:columns]['6'][:search][:value] = '-31/12/1999'
266+
datatable.params[:columns]['7'][:search][:value] = '-31/12/1999'
256267
expect(datatable.data.size).to eq 0
257268
end
258269
end
259270

260271
context 'when both date are filled' do
261272
it 'filters records created between the range' do
262-
datatable.params[:columns]['6'][:search][:value] = '01/12/1999-15/01/2000'
273+
datatable.params[:columns]['7'][:search][:value] = '01/12/1999-15/01/2000'
263274
expect(datatable.data.size).to eq 1
264275
end
265276
end
@@ -268,7 +279,7 @@
268279
context 'when range is empty' do
269280
it 'filters records' do
270281
datatable.params[:columns]['0'][:search][:value] = 'doe'
271-
datatable.params[:columns]['6'][:search][:value] = '-'
282+
datatable.params[:columns]['7'][:search][:value] = '-'
272283
expect(datatable.data.size).to eq 1
273284
item = datatable.data.first
274285
expect(item[:last_name]).to eq 'Doe'
@@ -278,7 +289,7 @@
278289
context 'when start date is filled' do
279290
it 'filters records' do
280291
datatable.params[:columns]['0'][:search][:value] = 'doe'
281-
datatable.params[:columns]['6'][:search][:value] = '01/12/1999-'
292+
datatable.params[:columns]['7'][:search][:value] = '01/12/1999-'
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 end date is filled' do
289300
it 'filters records' do
290301
datatable.params[:columns]['0'][:search][:value] = 'doe'
291-
datatable.params[:columns]['6'][:search][:value] = '-15/01/2000'
302+
datatable.params[:columns]['7'][:search][:value] = '-15/01/2000'
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 both date are filled' do
299310
it 'filters records' do
300311
datatable.params[:columns]['0'][:search][:value] = 'doe'
301-
datatable.params[:columns]['6'][:search][:value] = '01/12/1999-15/01/2000'
312+
datatable.params[:columns]['7'][:search][:value] = '01/12/1999-15/01/2000'
302313
expect(datatable.data.size).to eq 1
303314
item = datatable.data.first
304315
expect(item[:last_name]).to eq 'Doe'

spec/support/datatables/complex_datatable.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +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 },
12+
email_hash: { source: 'email_hash', searchable: false },
1313
created_at: { source: 'User.created_at' },
1414
}
1515
end
@@ -23,6 +23,7 @@ def data
2323
last_name: record.last_name,
2424
full_name: record.full_name,
2525
post_id: record.post_id,
26+
email_hash: record.email_hash,
2627
created_at: record.created_at,
2728
}
2829
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

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ def full_name
88
end
99

1010
def email_hash
11+
return nil if email.nil?
12+
1113
Digest::SHA256.hexdigest email
1214
end
1315
end

0 commit comments

Comments
 (0)