|
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)
|
|
236 | 247 |
|
237 | 248 | context 'when range is empty' do
|
238 | 249 | it 'does not filter records' do
|
239 |
| - datatable.params[:columns]['6'][:search][:value] = '-' |
| 250 | + datatable.params[:columns]['7'][:search][:value] = '-' |
240 | 251 | expect(datatable.data.size).to eq 2
|
241 | 252 | item = datatable.data.first
|
242 | 253 | expect(item[:last_name]).to eq 'Doe'
|
|
245 | 256 |
|
246 | 257 | context 'when start date is filled' do
|
247 | 258 | 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-' |
249 | 260 | expect(datatable.data.size).to eq 2
|
250 | 261 | end
|
251 | 262 | end
|
252 | 263 |
|
253 | 264 | context 'when end date is filled' do
|
254 | 265 | 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' |
256 | 267 | expect(datatable.data.size).to eq 0
|
257 | 268 | end
|
258 | 269 | end
|
259 | 270 |
|
260 | 271 | context 'when both date are filled' do
|
261 | 272 | 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' |
263 | 274 | expect(datatable.data.size).to eq 1
|
264 | 275 | end
|
265 | 276 | end
|
|
268 | 279 | context 'when range is empty' do
|
269 | 280 | it 'filters records' do
|
270 | 281 | datatable.params[:columns]['0'][:search][:value] = 'doe'
|
271 |
| - datatable.params[:columns]['6'][:search][:value] = '-' |
| 282 | + datatable.params[:columns]['7'][:search][:value] = '-' |
272 | 283 | expect(datatable.data.size).to eq 1
|
273 | 284 | item = datatable.data.first
|
274 | 285 | expect(item[:last_name]).to eq 'Doe'
|
|
278 | 289 | context 'when start date is filled' do
|
279 | 290 | it 'filters records' do
|
280 | 291 | 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-' |
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 end 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] = '-15/01/2000' |
| 302 | + datatable.params[:columns]['7'][:search][:value] = '-15/01/2000' |
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 both date are filled' do
|
299 | 310 | it 'filters records' do
|
300 | 311 | 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' |
302 | 313 | expect(datatable.data.size).to eq 1
|
303 | 314 | item = datatable.data.first
|
304 | 315 | expect(item[:last_name]).to eq 'Doe'
|
|
0 commit comments