22
33namespace Ozdemir \Datatables \Test ;
44
5- use Ozdemir \Datatables \ColumnNameList ;
65use Ozdemir \Datatables \DB \SQLite ;
76use Ozdemir \Datatables \Datatables ;
87use PHPUnit \Framework \TestCase ;
@@ -184,7 +183,7 @@ public function testSortsExcludingHiddenColumns()
184183 public function testSortsExcludingHiddenColumnsObjectData ()
185184 {
186185 $ this ->request ->query ->set ('search ' , ['value ' => '' ]);
187- $ this ->request ->query ->set ('order ' , [['column ' => '1 ' , 'dir ' => 'asc ' ]]); // age - asc
186+ $ this ->request ->query ->set ('order ' , [['column ' => '1 ' , 'dir ' => 'asc ' ]]);
188187
189188 $ this ->request ->query ->set ('columns ' , [
190189 ['data ' => 'name ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
@@ -203,7 +202,7 @@ public function testSortsExcludingHiddenColumnsObjectData()
203202 public function testReorderingColumnsDoesNotAffectOrdering ()
204203 {
205204 $ this ->request ->query ->set ('search ' , ['value ' => '' ]);
206- $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]); // age - asc
205+ $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]);
207206
208207 $ this ->request ->query ->set ('columns ' , [
209208 ['data ' => 'age ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
@@ -221,7 +220,7 @@ public function testReorderingColumnsDoesNotAffectOrdering()
221220 public function testReorderingColumnsDoesNotAffectGlobalSearching ()
222221 {
223222 $ this ->request ->query ->set ('search ' , ['value ' => 'Stephanie ' ]);
224- $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]); // age - asc
223+ $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]);
225224
226225 $ this ->request ->query ->set ('columns ' , [
227226 ['data ' => '2 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
@@ -238,7 +237,7 @@ public function testReorderingColumnsDoesNotAffectGlobalSearching()
238237 public function testReorderingColumnsDoesNotAffectIndividualSearching ()
239238 {
240239 $ this ->request ->query ->set ('search ' , ['value ' => '' ]);
241- $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]); // age - asc
240+ $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]);
242241
243242 $ this ->request ->query ->set ('columns ' , [
244243 ['data ' => 'surname ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => 'McCoy ' ]],
@@ -252,4 +251,72 @@ public function testReorderingColumnsDoesNotAffectIndividualSearching()
252251
253252 $ this ->assertSame (['name ' => 'Colin ' , 'surname ' => 'McCoy ' , 'age ' => '19 ' ], $ datatables ['data ' ][0 ]);
254253 }
254+
255+ public function testCustomFilteringBetween ()
256+ {
257+ $ this ->request ->query ->set ('search ' , ['value ' => '' ]);
258+ $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]);
259+
260+ $ this ->request ->query ->set ('columns ' , [
261+ ['data ' => '0 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
262+ ['data ' => '1 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
263+ ['data ' => '2 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
264+ ]);
265+
266+ $ this ->db ->query ('Select id as fid, name, surname, age from mytable ' );
267+ $ this ->db ->filter ('fid ' , function (){
268+ return $ this ->between (4 ,6 );
269+ });
270+
271+ $ datatables = $ this ->db ->generate ()->toArray ();
272+
273+ $ this ->assertSame (11 , $ datatables ['recordsTotal ' ]);
274+ $ this ->assertSame (3 , $ datatables ['recordsFiltered ' ]);
275+ }
276+
277+ public function testCustomFilteringWhereIn ()
278+ {
279+ $ this ->request ->query ->set ('search ' , ['value ' => '' ]);
280+ $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]);
281+
282+ $ this ->request ->query ->set ('columns ' , [
283+ ['data ' => '0 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
284+ ['data ' => '1 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
285+ ['data ' => '2 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
286+ ]);
287+
288+ $ this ->db ->query ('Select id as fid, name, surname, age from mytable ' );
289+ $ this ->db ->filter ('fid ' , function (){
290+ return $ this ->whereIn ([5 ]);
291+ });
292+
293+ $ datatables = $ this ->db ->generate ()->toArray ();
294+
295+ $ this ->assertSame (11 , $ datatables ['recordsTotal ' ]);
296+ $ this ->assertSame (1 , $ datatables ['recordsFiltered ' ]);
297+ $ this ->assertSame (['5 ' , 'Ruby ' , 'Pickett ' , '28 ' ], $ datatables ['data ' ][0 ]);
298+ }
299+
300+ public function testReturnDefaultSearchWhenNull ()
301+ {
302+ $ this ->request ->query ->set ('search ' , ['value ' => '' ]);
303+ $ this ->request ->query ->set ('order ' , [['column ' => '0 ' , 'dir ' => 'asc ' ]]);
304+
305+ $ this ->request ->query ->set ('columns ' , [
306+ ['data ' => '0 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '5 ' ]],
307+ ['data ' => '1 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
308+ ['data ' => '2 ' , 'name ' => '' , 'searchable ' => true , 'orderable ' => true , 'search ' => ['value ' => '' ]],
309+ ]);
310+
311+ $ this ->db ->query ('Select id as fid, name, surname, age from mytable ' );
312+ $ this ->db ->filter ('fid ' , function (){
313+ //return $this->defaultFilter(); // when it is not defined, returns defaultFilter
314+ });
315+
316+ $ datatables = $ this ->db ->generate ()->toArray ();
317+
318+ $ this ->assertSame (11 , $ datatables ['recordsTotal ' ]);
319+ $ this ->assertSame (1 , $ datatables ['recordsFiltered ' ]);
320+ $ this ->assertSame (['5 ' , 'Ruby ' , 'Pickett ' , '28 ' ], $ datatables ['data ' ][0 ]);
321+ }
255322}
0 commit comments