|
12 | 12 | expect { datatable.filter_records }.to raise_error(ArgumentError) |
13 | 13 | end |
14 | 14 |
|
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 |
19 | 29 | end |
20 | 30 |
|
| 31 | + |
21 | 32 | it 'performs a composite search second' do |
22 | 33 | datatable.params[:search] = { value: '' } |
23 | 34 | expect(datatable).to receive(:build_conditions_for_selected_columns) |
|
246 | 257 |
|
247 | 258 | context 'when range is empty' do |
248 | 259 | it 'does not filter records' do |
249 | | - datatable.params[:columns]['6'][:search][:value] = '-' |
| 260 | + datatable.params[:columns]['7'][:search][:value] = '-' |
250 | 261 | expect(datatable.data.size).to eq 2 |
251 | 262 | item = datatable.data.first |
252 | 263 | expect(item[:last_name]).to eq 'Doe' |
|
255 | 266 |
|
256 | 267 | context 'when start date is filled' do |
257 | 268 | 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-' |
259 | 270 | expect(datatable.data.size).to eq 2 |
260 | 271 | end |
261 | 272 | end |
262 | 273 |
|
263 | 274 | context 'when end date is filled' do |
264 | 275 | 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' |
266 | 277 | expect(datatable.data.size).to eq 0 |
267 | 278 | end |
268 | 279 | end |
269 | 280 |
|
270 | 281 | context 'when both date are filled' do |
271 | 282 | 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' |
273 | 284 | expect(datatable.data.size).to eq 1 |
274 | 285 | end |
275 | 286 | end |
|
278 | 289 | context 'when range is empty' do |
279 | 290 | it 'filters records' do |
280 | 291 | datatable.params[:columns]['0'][:search][:value] = 'doe' |
281 | | - datatable.params[:columns]['6'][:search][:value] = '-' |
| 292 | + datatable.params[:columns]['7'][:search][:value] = '-' |
282 | 293 | expect(datatable.data.size).to eq 1 |
283 | 294 | item = datatable.data.first |
284 | 295 | expect(item[:last_name]).to eq 'Doe' |
|
288 | 299 | context 'when start date is filled' do |
289 | 300 | it 'filters records' do |
290 | 301 | 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-' |
292 | 303 | expect(datatable.data.size).to eq 1 |
293 | 304 | item = datatable.data.first |
294 | 305 | expect(item[:last_name]).to eq 'Doe' |
|
298 | 309 | context 'when end date is filled' do |
299 | 310 | it 'filters records' do |
300 | 311 | 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' |
302 | 313 | expect(datatable.data.size).to eq 1 |
303 | 314 | item = datatable.data.first |
304 | 315 | expect(item[:last_name]).to eq 'Doe' |
|
308 | 319 | context 'when both date are filled' do |
309 | 320 | it 'filters records' do |
310 | 321 | 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' |
312 | 323 | expect(datatable.data.size).to eq 1 |
313 | 324 | item = datatable.data.first |
314 | 325 | expect(item[:last_name]).to eq 'Doe' |
|
0 commit comments