33import com .fasterxml .jackson .databind .ObjectMapper ;
44import com .sbxcloud .sbx .model .AndOr ;
55import com .sbxcloud .sbx .model .Operation ;
6+ import com .sbxcloud .sbx .model .WhereClause ;
67import com .sbxcloud .sbx .query .FindQuery ;
78import org .junit .jupiter .api .Test ;
89
@@ -22,11 +23,14 @@ void shouldBuildSimpleQuery() {
2223
2324 assertEquals ("contact" , query .rowModel ());
2425 assertNotNull (query .where ());
25- assertEquals (1 , query .where ().size ());
26- assertEquals (AndOr .AND , query .where ().get (0 ).andOr ());
27- assertEquals (1 , query .where ().get (0 ).group ().size ());
26+ assertInstanceOf (WhereClause .Conditions .class , query .where ());
2827
29- var expr = query .where ().get (0 ).group ().get (0 );
28+ var conditions = (WhereClause .Conditions ) query .where ();
29+ assertEquals (1 , conditions .groups ().size ());
30+ assertEquals (AndOr .AND , conditions .groups ().get (0 ).andOr ());
31+ assertEquals (1 , conditions .groups ().get (0 ).group ().size ());
32+
33+ var expr = conditions .groups ().get (0 ).group ().get (0 );
3034 assertEquals ("status" , expr .field ());
3135 assertEquals (Operation .EQUAL , expr .operation ());
3236 assertEquals ("ACTIVE" , expr .value ());
@@ -44,15 +48,16 @@ void shouldBuildQueryWithMultipleConditions() {
4448 .compile ();
4549
4650 assertEquals ("contact" , query .rowModel ());
47- assertEquals (2 , query .where ().size ());
51+ var conditions = (WhereClause .Conditions ) query .where ();
52+ assertEquals (2 , conditions .groups ().size ());
4853
4954 // First group: AND
50- assertEquals (AndOr .AND , query . where ().get (0 ).andOr ());
51- assertEquals (2 , query . where ().get (0 ).group ().size ());
55+ assertEquals (AndOr .AND , conditions . groups ().get (0 ).andOr ());
56+ assertEquals (2 , conditions . groups ().get (0 ).group ().size ());
5257
5358 // Second group: OR
54- assertEquals (AndOr .OR , query . where ().get (1 ).andOr ());
55- assertEquals (2 , query . where ().get (1 ).group ().size ());
59+ assertEquals (AndOr .OR , conditions . groups ().get (1 ).andOr ());
60+ assertEquals (2 , conditions . groups ().get (1 ).group ().size ());
5661 }
5762
5863 @ Test
@@ -86,7 +91,11 @@ void shouldBuildQueryWithKeys() {
8691 .whereWithKeys ("key1" , "key2" , "key3" )
8792 .compile ();
8893
89- assertEquals (List .of ("key1" , "key2" , "key3" ), query .keys ());
94+ assertNotNull (query .where ());
95+ assertInstanceOf (WhereClause .Keys .class , query .where ());
96+
97+ var keysClause = (WhereClause .Keys ) query .where ();
98+ assertEquals (List .of ("key1" , "key2" , "key3" ), keysClause .keys ());
9099 }
91100
92101 @ Test
@@ -95,7 +104,8 @@ void shouldBuildQueryWithInOperator() {
95104 .andWhereIsIn ("status" , "ACTIVE" , "PENDING" )
96105 .compile ();
97106
98- var expr = query .where ().get (0 ).group ().get (0 );
107+ var conditions = (WhereClause .Conditions ) query .where ();
108+ var expr = conditions .groups ().get (0 ).group ().get (0 );
99109 assertEquals (Operation .IN , expr .operation ());
100110 assertEquals (List .of ("ACTIVE" , "PENDING" ), expr .value ());
101111 }
@@ -107,13 +117,14 @@ void shouldBuildQueryWithNullChecks() {
107117 .andWhereIsNotNull ("email" )
108118 .compile ();
109119
110- assertEquals (2 , query .where ().get (0 ).group ().size ());
120+ var conditions = (WhereClause .Conditions ) query .where ();
121+ assertEquals (2 , conditions .groups ().get (0 ).group ().size ());
111122
112- var nullExpr = query . where ().get (0 ).group ().get (0 );
123+ var nullExpr = conditions . groups ().get (0 ).group ().get (0 );
113124 assertEquals (Operation .IS , nullExpr .operation ());
114125 assertNull (nullExpr .value ());
115126
116- var notNullExpr = query . where ().get (0 ).group ().get (1 );
127+ var notNullExpr = conditions . groups ().get (0 ).group ().get (1 );
117128 assertEquals (Operation .IS_NOT , notNullExpr .operation ());
118129 assertNull (notNullExpr .value ());
119130 }
@@ -126,7 +137,8 @@ void shouldBuildQueryWithLikeOperations() {
126137 .andWhereContains ("address" , "Street" )
127138 .compile ();
128139
129- var group = query .where ().get (0 ).group ();
140+ var conditions = (WhereClause .Conditions ) query .where ();
141+ var group = conditions .groups ().get (0 ).group ();
130142
131143 assertEquals ("John%" , group .get (0 ).value ());
132144 assertEquals ("%@example.com" , group .get (1 ).value ());
@@ -139,7 +151,8 @@ void shouldEscapePercentInContains() {
139151 .andWhereContains ("name" , "100%" )
140152 .compile ();
141153
142- var expr = query .where ().get (0 ).group ().get (0 );
154+ var conditions = (WhereClause .Conditions ) query .where ();
155+ var expr = conditions .groups ().get (0 ).group ().get (0 );
143156 assertEquals ("%100%" , expr .value ());
144157 }
145158}
0 commit comments