1- package com .beyt .filter ;
1+ package com .beyt .query ;
22
33import com .beyt .BaseTestInstance ;
44import com .beyt .TestApplication ;
1919import org .springframework .data .util .Pair ;
2020
2121import java .text .SimpleDateFormat ;
22- import java .util .ArrayList ;
2322import java .util .Calendar ;
24- import java .util .Collections ;
2523import java .util .List ;
2624
27- import static com .beyt .filter . query .simplifier .QuerySimplifier .*;
25+ import static com .beyt .query .builder .QuerySimplifier .*;
2826import static org .junit .jupiter .api .Assertions .assertEquals ;
2927import static org .junit .jupiter .api .Assertions .assertThrows ;
3028
3129@ SpringBootTest (classes = TestApplication .class )
3230@ TestInstance (TestInstance .Lifecycle .PER_CLASS )
33- class DatabaseFilterManagerTest extends BaseTestInstance {
31+ class DynamicQueryManagerTest extends BaseTestInstance {
3432
3533 private SimpleDateFormat dateFormat ;
3634
3735 @ BeforeAll
38- private void init () {
36+ protected void init () {
3937 userRepository .save (user1 );
4038 userRepository .save (user2 );
4139 userRepository .save (user3 );
@@ -61,6 +59,14 @@ void findAll() {
6159 // SINGLE CRITERIA TESTS
6260
6361 //Support Single Input => GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN_OR_EQUAL, LESS_THAN
62+ assertEquals (toList (user2 , user4 , user6 , user7 ),
63+ userRepository .findAllWithCriteria (CriteriaList .of (Criteria .of ("status" , CriteriaType .EQUAL , User .Status .ACTIVE ))));
64+ assertEquals (toList (user1 , user2 , user3 , user4 , user5 , user6 , user7 , user8 ),
65+ userRepository .findAllWithCriteria (CriteriaList .of (Criteria .of ("status" , CriteriaType .EQUAL , User .Status .ACTIVE , User .Status .PASSIVE ))));
66+ assertEquals (toList (user2 , user5 , user6 , user8 ),
67+ userRepository .findAllWithCriteria (CriteriaList .of (Criteria .of ("type" , CriteriaType .EQUAL , User .Type .ADMIN ))));
68+ assertEquals (toList (user2 , user6 ),
69+ userRepository .findAllWithCriteria (CriteriaList .of (Criteria .of ("type" , CriteriaType .EQUAL , User .Type .ADMIN ), Criteria .of ("status" , CriteriaType .EQUAL , User .Status .ACTIVE ))));
6470 assertEquals (toList (customer5 , customer6 , customer7 , customer8 ),
6571 customerRepository .findAllWithCriteria (CriteriaList .of (Criteria .of ("age" , CriteriaType .GREATER_THAN_OR_EQUAL , 24 ))));
6672 assertEquals (toList (customer6 , customer7 , customer8 ),
@@ -196,10 +202,9 @@ void findAll() {
196202
197203 }
198204
205+ @ SafeVarargs
199206 public static <T > List <T > toList (T ... values ) {
200- ArrayList <T > list = new ArrayList <>();
201- Collections .addAll (list , values );
202- return list ;
207+ return List .of (values );
203208 }
204209
205210 @ Test
@@ -232,8 +237,8 @@ void simplifiedSearchQuery() {
232237 .page (0 , 2 )
233238 .getResult (User .class );
234239
235- assertEquals (toList (new User (null , user3 .getName (), customer3 .getName (), user3 .getAge (), customer3 .getBirthdate ()),
236- new User (null , user4 .getName (), customer4 .getName (), user4 .getAge (), customer4 .getBirthdate ())), result );
240+ assertEquals (toList (new User (null , user3 .getName (), customer3 .getName (), user3 .getAge (), customer3 .getBirthdate (), null , null ),
241+ new User (null , user4 .getName (), customer4 .getName (), user4 .getAge (), customer4 .getBirthdate (), null , null )), result );
237242
238243 Page <User > resultAsPage = customerRepository .query ()
239244 .select (Select ("user.name" , "name" ), Select ("user.age" ), Select ("name" , "surname" ), Select ("birthdate" , "birthdate" ))
@@ -243,11 +248,21 @@ void simplifiedSearchQuery() {
243248 .page (1 , 2 )
244249 .getResultAsPage (User .class );
245250
246- assertEquals (toList (new User (null , user5 .getName (), customer5 .getName (), user5 .getAge (), customer5 .getBirthdate ()),
247- new User (null , user6 .getName (), customer6 .getName (), user6 .getAge (), customer6 .getBirthdate ())), resultAsPage .getContent ());
251+ assertEquals (toList (new User (null , user5 .getName (), customer5 .getName (), user5 .getAge (), customer5 .getBirthdate (), null , null ),
252+ new User (null , user6 .getName (), customer6 .getName (), user6 .getAge (), customer6 .getBirthdate (), null , null )), resultAsPage .getContent ());
248253
249254 assertEquals (4 , resultAsPage .getTotalElements ());
250255 assertEquals (2 , resultAsPage .getTotalPages ());
251256 assertEquals (Sort .Direction .ASC , resultAsPage .getPageable ().getSort ().getOrderFor ("user.id" ).getDirection ());
252257 }
258+
259+ @ Test
260+ void queryBuilderTests () {
261+ assertEquals (toList (user1 , user2 , user3 , user4 , user5 , user6 , user7 , user8 ),
262+ userRepository .query ().getResult ());
263+ assertEquals (toList (user2 , user4 , user6 , user7 ),
264+ userRepository .query ().where (Field ("status" ).eq (User .Status .ACTIVE )).getResult ());
265+ assertEquals (toList (user7 , user6 , user4 , user2 ),
266+ userRepository .query ().where (Field ("status" ).eq (User .Status .ACTIVE )).orderBy (OrderBy ("id" , Order .DESC )).getResult ());
267+ }
253268}
0 commit comments