31
31
32
32
import static java .util .concurrent .TimeUnit .MINUTES ;
33
33
import static org .assertj .core .api .Assertions .assertThat ;
34
+ import static org .hibernate .query .Page .first ;
35
+ import static org .hibernate .query .Page .page ;
34
36
35
37
/**
36
- * Test the combination of filters, max results and first result.
38
+ * Test the combination of filters, max results, first result, and {@link org.hibernate.query.Page} .
37
39
*/
38
40
@ Timeout (value = 10 , timeUnit = MINUTES )
39
41
@@ -77,6 +79,23 @@ public void testMaxResultsAndOffsetWithStageWithBasicQuery(VertxTestContext cont
77
79
);
78
80
}
79
81
82
+ /**
83
+ * Sql server run different queries based if order-by is missing and there are no filters
84
+ */
85
+ @ Test
86
+ public void testMaxResultsAndOffsetWithStageWithBasicQueryAndPage (VertxTestContext context ) {
87
+ test ( context , openSession ()
88
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_BASIC_QUERY )
89
+ .setPage ( page ( 2 , 0 ) )
90
+ .getResultList () )
91
+ // I cannot use the order-by, so I'm not sure which result it will return
92
+ .thenAccept ( list -> {
93
+ assertThat ( list ).containsAnyOf ( margaret , nellie , hedy , rebeccaActress , rebeccaSinger );
94
+ assertThat ( list ).hasSize ( 2 );
95
+ } )
96
+ );
97
+ }
98
+
80
99
@ Test
81
100
public void testOffsetWithStageWithBasicQuery (VertxTestContext context ) {
82
101
test ( context , openSession ()
@@ -91,6 +110,20 @@ public void testOffsetWithStageWithBasicQuery(VertxTestContext context) {
91
110
);
92
111
}
93
112
113
+ @ Test
114
+ public void testWithStageWithBasicQueryAndPage (VertxTestContext context ) {
115
+ test ( context , openSession ()
116
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_BASIC_QUERY )
117
+ .setPage ( first ( 3 ) )
118
+ .getResultList () )
119
+ // I cannot use the order-by, so I'm not sure which results it will return
120
+ .thenAccept ( list -> {
121
+ assertThat ( list ).containsAnyOf ( margaret , nellie , hedy , rebeccaActress , rebeccaSinger );
122
+ assertThat ( list ).hasSize ( 3 );
123
+ } )
124
+ );
125
+ }
126
+
94
127
@ Test
95
128
public void testMaxResultsWithStageWithBasicQuery (VertxTestContext context ) {
96
129
test ( context , openSession ()
@@ -105,6 +138,20 @@ public void testMaxResultsWithStageWithBasicQuery(VertxTestContext context) {
105
138
);
106
139
}
107
140
141
+ @ Test
142
+ public void testMaxResultsWithStageWithBasicQueryAndPage (VertxTestContext context ) {
143
+ test ( context , openSession ()
144
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_BASIC_QUERY )
145
+ .setPage ( first ( 4 ) )
146
+ .getResultList () )
147
+ // I cannot use the order-by, so I'm not sure which result it will return
148
+ .thenAccept ( list -> {
149
+ assertThat ( list ).containsAnyOf ( margaret , nellie , hedy , rebeccaActress , rebeccaSinger );
150
+ assertThat ( list ).hasSize ( 4 );
151
+ } )
152
+ );
153
+ }
154
+
108
155
@ Test
109
156
public void testMaxResultsWithStage (VertxTestContext context ) {
110
157
test ( context , enableFilter ( openSession (), FamousPerson .IS_ALIVE_FILTER )
@@ -115,6 +162,16 @@ public void testMaxResultsWithStage(VertxTestContext context) {
115
162
);
116
163
}
117
164
165
+ @ Test
166
+ public void testMaxResultsWithStageAndPage (VertxTestContext context ) {
167
+ test ( context , enableFilter ( openSession (), FamousPerson .IS_ALIVE_FILTER )
168
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
169
+ .setPage ( first ( 2 ) )
170
+ .getResultList () )
171
+ .thenAccept ( list -> assertThat ( list ).containsExactly ( margaret , rebeccaActress ) )
172
+ );
173
+ }
174
+
118
175
@ Test
119
176
public void testMaxResultsWithMutiny (VertxTestContext context ) {
120
177
test ( context , enableFilter ( openMutinySession (), FamousPerson .IS_ALIVE_FILTER )
@@ -125,6 +182,16 @@ public void testMaxResultsWithMutiny(VertxTestContext context) {
125
182
);
126
183
}
127
184
185
+ @ Test
186
+ public void testMaxResultsWithMutinyAndPage (VertxTestContext context ) {
187
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .IS_ALIVE_FILTER )
188
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
189
+ .setPage ( first ( 2 ) )
190
+ .getResultList () )
191
+ .invoke ( list -> assertThat ( list ).containsExactly ( margaret , rebeccaActress ) )
192
+ );
193
+ }
194
+
128
195
@ Test
129
196
public void testFirstResultWithStage (VertxTestContext context ) {
130
197
test ( context , enableFilter ( openSession (), FamousPerson .IS_ALIVE_FILTER )
@@ -135,6 +202,16 @@ public void testFirstResultWithStage(VertxTestContext context) {
135
202
);
136
203
}
137
204
205
+ @ Test
206
+ public void testFirstResultWithStageAndPage (VertxTestContext context ) {
207
+ test ( context , enableFilter ( openSession (), FamousPerson .IS_ALIVE_FILTER )
208
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
209
+ .setPage ( page ( 2 , 1 ) )
210
+ .getResultList () )
211
+ .thenAccept ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) )
212
+ );
213
+ }
214
+
138
215
@ Test
139
216
public void testFirstResultWithMutiny (VertxTestContext context ) {
140
217
test ( context , enableFilter ( openMutinySession (), FamousPerson .IS_ALIVE_FILTER )
@@ -145,6 +222,16 @@ public void testFirstResultWithMutiny(VertxTestContext context) {
145
222
);
146
223
}
147
224
225
+ @ Test
226
+ public void testFirstResultWithMutinyAndPage (VertxTestContext context ) {
227
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .IS_ALIVE_FILTER )
228
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
229
+ .setPage ( page ( 2 , 1 ) )
230
+ .getResultList () )
231
+ .invoke ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) )
232
+ );
233
+ }
234
+
148
235
@ Test
149
236
public void testMaxResultsAndOffsetWithStage (VertxTestContext context ) {
150
237
test ( context , enableFilter ( openSession (), FamousPerson .IS_ALIVE_FILTER )
@@ -156,6 +243,16 @@ public void testMaxResultsAndOffsetWithStage(VertxTestContext context) {
156
243
);
157
244
}
158
245
246
+ @ Test
247
+ public void testMaxResultsAndOffsetWithStageAndPage (VertxTestContext context ) {
248
+ test ( context , enableFilter ( openSession (), FamousPerson .IS_ALIVE_FILTER )
249
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
250
+ .setPage ( page ( 2 , 1 ) )
251
+ .getResultList () )
252
+ .thenAccept ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) )
253
+ );
254
+ }
255
+
159
256
@ Test
160
257
public void testMaxResultsAndOffsetWithMutiny (VertxTestContext context ) {
161
258
test ( context , enableFilter ( openMutinySession (), FamousPerson .IS_ALIVE_FILTER )
@@ -167,6 +264,16 @@ public void testMaxResultsAndOffsetWithMutiny(VertxTestContext context) {
167
264
);
168
265
}
169
266
267
+ @ Test
268
+ public void testMaxResultsAndOffsetWithMutinyAndPage (VertxTestContext context ) {
269
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .IS_ALIVE_FILTER )
270
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
271
+ .setPage ( page ( 2 , 1 ) )
272
+ .getResultList () )
273
+ .invoke ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) )
274
+ );
275
+ }
276
+
170
277
@ Test
171
278
public void testMaxResultsForParameterizedFilterWithStage (VertxTestContext context ) {
172
279
test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -177,6 +284,16 @@ public void testMaxResultsForParameterizedFilterWithStage(VertxTestContext conte
177
284
);
178
285
}
179
286
287
+ @ Test
288
+ public void testMaxResultsForParameterizedFilterWithStageAndPage (VertxTestContext context ) {
289
+ test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
290
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
291
+ .setPage ( first ( 2 ) )
292
+ .getResultList () )
293
+ .thenAccept ( list -> assertThat ( list ).containsExactly ( rebeccaActress , rebeccaSinger ) )
294
+ );
295
+ }
296
+
180
297
@ Test
181
298
public void testMaxResultsForParameterizedFilterWithMutiny (VertxTestContext context ) {
182
299
test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -187,6 +304,16 @@ public void testMaxResultsForParameterizedFilterWithMutiny(VertxTestContext cont
187
304
);
188
305
}
189
306
307
+ @ Test
308
+ public void testMaxResultsForParameterizedFilterWithMutinyAndPage (VertxTestContext context ) {
309
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
310
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
311
+ .setPage ( first ( 2 ) )
312
+ .getResultList () )
313
+ .invoke ( list -> assertThat ( list ).containsExactly ( rebeccaActress , rebeccaSinger ) )
314
+ );
315
+ }
316
+
190
317
@ Test
191
318
public void testSingleResultMaxResultsForParameterizedFilterWithStage (VertxTestContext context ) {
192
319
test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -197,6 +324,16 @@ public void testSingleResultMaxResultsForParameterizedFilterWithStage(VertxTestC
197
324
);
198
325
}
199
326
327
+ @ Test
328
+ public void testSingleResultMaxResultsForParameterizedFilterWithStageAndPage (VertxTestContext context ) {
329
+ test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
330
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
331
+ .setPage ( first ( 1 ) )
332
+ .getSingleResult () )
333
+ .thenAccept ( result -> assertThat ( result ).isEqualTo ( rebeccaActress ) )
334
+ );
335
+ }
336
+
200
337
@ Test
201
338
public void testSingleResultMaxResultsForParameterizedFilterWithMutiny (VertxTestContext context ) {
202
339
test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -207,6 +344,16 @@ public void testSingleResultMaxResultsForParameterizedFilterWithMutiny(VertxTest
207
344
);
208
345
}
209
346
347
+ @ Test
348
+ public void testSingleResultMaxResultsForParameterizedFilterWithMutinyAndPage (VertxTestContext context ) {
349
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
350
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
351
+ .setPage ( first ( 1 ) )
352
+ .getSingleResult () )
353
+ .invoke ( result -> assertThat ( result ).isEqualTo ( rebeccaActress ) )
354
+ );
355
+ }
356
+
210
357
@ Test
211
358
public void testFirstResultForParameterizedFilterWithStage (VertxTestContext context ) {
212
359
test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -217,6 +364,16 @@ public void testFirstResultForParameterizedFilterWithStage(VertxTestContext cont
217
364
);
218
365
}
219
366
367
+ @ Test
368
+ public void testFirstResultForParameterizedFilterWithStageAndPage (VertxTestContext context ) {
369
+ test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
370
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
371
+ .setPage ( page ( 1 , 1 ) )
372
+ .getResultList ()
373
+ .thenAccept ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) ) )
374
+ );
375
+ }
376
+
220
377
@ Test
221
378
public void testFirstResultForParameterizedFilterWithMutiny (VertxTestContext context ) {
222
379
test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -227,6 +384,16 @@ public void testFirstResultForParameterizedFilterWithMutiny(VertxTestContext con
227
384
);
228
385
}
229
386
387
+ @ Test
388
+ public void testFirstResultForParameterizedFilterWithMutinyAndPage (VertxTestContext context ) {
389
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
390
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
391
+ .setPage ( page ( 1 , 1 ) )
392
+ .getResultList () )
393
+ .invoke ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) )
394
+ );
395
+ }
396
+
230
397
@ Test
231
398
public void testMaxResultsAndFirstResultForParameterizedFilterWithStage (VertxTestContext context ) {
232
399
test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -238,6 +405,16 @@ public void testMaxResultsAndFirstResultForParameterizedFilterWithStage(VertxTes
238
405
);
239
406
}
240
407
408
+ @ Test
409
+ public void testMaxResultsAndFirstResultForParameterizedFilterWithStageAndPage (VertxTestContext context ) {
410
+ test ( context , enableFilter ( openSession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
411
+ .thenCompose ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
412
+ .setPage ( first ( 2 ) )
413
+ .getResultList () )
414
+ .thenAccept ( list -> assertThat ( list ).containsExactly ( rebeccaActress , rebeccaSinger ) )
415
+ );
416
+ }
417
+
241
418
@ Test
242
419
public void testMaxResultsAndFirstResultForParameterizedFilterWithMutiny (VertxTestContext context ) {
243
420
test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
@@ -249,6 +426,27 @@ public void testMaxResultsAndFirstResultForParameterizedFilterWithMutiny(VertxTe
249
426
);
250
427
}
251
428
429
+ @ Test
430
+ public void testMaxResultsAndFirstResultForParameterizedFilterWithMutinyAndPage (VertxTestContext context ) {
431
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
432
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
433
+ .setPage ( page ( 1 , 1 ) )
434
+ .getResultList () )
435
+ .invoke ( list -> assertThat ( list ).containsExactly ( rebeccaSinger ) )
436
+ );
437
+ }
438
+
439
+
440
+ @ Test
441
+ public void testMaxResultsAndFirstResultForParameterizedFilterWithMutinyAndPageFirst (VertxTestContext context ) {
442
+ test ( context , enableFilter ( openMutinySession (), FamousPerson .HAS_NAME_FILTER , "name" , rebeccaActress .name )
443
+ .chain ( session -> session .createNamedQuery ( FamousPerson .FIND_ALL_QUERY )
444
+ .setPage ( first ( 2 ) )
445
+ .getResultList () )
446
+ .invoke ( list -> assertThat ( list ).containsExactly ( rebeccaActress , rebeccaSinger ) )
447
+ );
448
+ }
449
+
252
450
private static CompletionStage <Stage .Session > enableFilter (
253
451
CompletionStage <Stage .Session > stageSession ,
254
452
String filterName ,
0 commit comments