1
1
/*
2
- * Copyright 2013-2022 the original author or authors.
2
+ * Copyright 2013-2023 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
23
23
import org .junit .jupiter .api .BeforeEach ;
24
24
import org .junit .jupiter .api .Test ;
25
25
import org .junit .jupiter .api .extension .ExtendWith ;
26
- import org .mockito .ArgumentCaptor ;
27
26
import org .mockito .Mock ;
28
27
import org .mockito .junit .jupiter .MockitoExtension ;
29
28
import org .springframework .data .domain .PageRequest ;
37
36
import static org .junit .jupiter .api .Assertions .assertFalse ;
38
37
import static org .junit .jupiter .api .Assertions .assertThrows ;
39
38
import static org .junit .jupiter .api .Assertions .assertTrue ;
39
+ import static org .mockito .ArgumentMatchers .any ;
40
+ import static org .mockito .ArgumentMatchers .anyString ;
41
+ import static org .mockito .ArgumentMatchers .assertArg ;
40
42
import static org .mockito .ArgumentMatchers .eq ;
43
+ import static org .mockito .Mockito .verify ;
41
44
import static org .mockito .Mockito .when ;
42
45
43
46
/**
@@ -109,89 +112,87 @@ void testAfterPropertiesSetForQueryObject() throws Exception {
109
112
110
113
@ Test
111
114
void testBasicQueryFirstPage () {
112
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
113
-
114
- when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <>());
115
+ when (template .find (any (), any ())).thenReturn (new ArrayList <>());
115
116
116
117
assertFalse (reader .doPageRead ().hasNext ());
117
118
118
- Query query = queryContainer .getValue ();
119
- assertEquals (50 , query .getLimit ());
120
- assertEquals (0 , query .getSkip ());
121
- assertEquals ("{}" , query .getQueryObject ().toJson ());
122
- assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
119
+ verify (template ).find (assertArg (query -> {
120
+ assertEquals (50 , query .getLimit ());
121
+ assertEquals (0 , query .getSkip ());
122
+ assertEquals ("{}" , query .getQueryObject ().toJson ());
123
+ assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
124
+ }), eq (String .class ));
123
125
}
124
126
125
127
@ Test
126
128
void testBasicQuerySecondPage () {
127
129
reader .page = 2 ;
128
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
129
130
130
- when (template .find (queryContainer . capture (), eq ( String . class ))).thenReturn (new ArrayList <>());
131
+ when (template .find (any (), any ( ))).thenReturn (new ArrayList <>());
131
132
132
133
assertFalse (reader .doPageRead ().hasNext ());
133
134
134
- Query query = queryContainer . getValue ();
135
-
136
- assertEquals (50 , query .getLimit ());
137
- assertEquals (100 , query .getSkip ());
138
- assertEquals ("{}" , query .getQueryObject ().toJson ());
139
- assertEquals ( "{ \" name \" : -1}" , query .getSortObject ().toJson ());
140
- assertTrue ( query . getFieldsObject (). isEmpty ( ));
135
+ verify ( template ). find ( assertArg ( query -> {
136
+ assertEquals ( 50 , query . getLimit ());
137
+ assertEquals (100 , query .getSkip ());
138
+ assertEquals ("{}" , query .getQueryObject (). toJson ());
139
+ assertEquals ("{\" name \" : -1 }" , query .getSortObject ().toJson ());
140
+ assertTrue ( query .getFieldsObject ().isEmpty ());
141
+ }), eq ( String . class ));
141
142
}
142
143
143
144
@ Test
144
145
void testQueryWithFields () {
145
146
reader .setFields ("{name : 1, age : 1, _id: 0}" );
146
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
147
147
148
- when (template .find (queryContainer . capture (), eq ( String . class ))).thenReturn (new ArrayList <>());
148
+ when (template .find (any (), any ( ))).thenReturn (new ArrayList <>());
149
149
150
150
assertFalse (reader .doPageRead ().hasNext ());
151
151
152
- Query query = queryContainer .getValue ();
153
- assertEquals (50 , query .getLimit ());
154
- assertEquals (0 , query .getSkip ());
155
- assertEquals ("{}" , query .getQueryObject ().toJson ());
156
- assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
157
- assertEquals (1 , query .getFieldsObject ().get ("name" ));
158
- assertEquals (1 , query .getFieldsObject ().get ("age" ));
159
- assertEquals (0 , query .getFieldsObject ().get ("_id" ));
152
+ verify (template ).find (assertArg (query -> {
153
+ assertEquals (50 , query .getLimit ());
154
+ assertEquals (0 , query .getSkip ());
155
+ assertEquals ("{}" , query .getQueryObject ().toJson ());
156
+ assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
157
+ assertEquals (1 , query .getFieldsObject ().get ("name" ));
158
+ assertEquals (1 , query .getFieldsObject ().get ("age" ));
159
+ assertEquals (0 , query .getFieldsObject ().get ("_id" ));
160
+ }), eq (String .class ));
160
161
}
161
162
162
163
@ Test
163
164
void testQueryWithHint () {
164
165
reader .setHint ("{ $natural : 1}" );
165
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
166
166
167
- when (template .find (queryContainer . capture (), eq ( String . class ))).thenReturn (new ArrayList <>());
167
+ when (template .find (any (), any ( ))).thenReturn (new ArrayList <>());
168
168
169
169
assertFalse (reader .doPageRead ().hasNext ());
170
170
171
- Query query = queryContainer .getValue ();
172
- assertEquals (50 , query .getLimit ());
173
- assertEquals (0 , query .getSkip ());
174
- assertEquals ("{}" , query .getQueryObject ().toJson ());
175
- assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
176
- assertEquals ("{ $natural : 1}" , query .getHint ());
171
+ verify (template ).find (assertArg (query -> {
172
+ assertEquals (50 , query .getLimit ());
173
+ assertEquals (0 , query .getSkip ());
174
+ assertEquals ("{}" , query .getQueryObject ().toJson ());
175
+ assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
176
+ assertEquals ("{ $natural : 1}" , query .getHint ());
177
+ }), eq (String .class ));
177
178
}
178
179
179
180
@ Test
180
181
void testQueryWithParameters () {
181
182
reader .setParameterValues (Collections .singletonList ("foo" ));
182
183
183
184
reader .setQuery ("{ name : ?0 }" );
184
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
185
185
186
- when (template .find (queryContainer . capture (), eq ( String . class ))).thenReturn (new ArrayList <>());
186
+ when (template .find (any (), any ( ))).thenReturn (new ArrayList <>());
187
187
188
188
assertFalse (reader .doPageRead ().hasNext ());
189
189
190
- Query query = queryContainer .getValue ();
191
- assertEquals (50 , query .getLimit ());
192
- assertEquals (0 , query .getSkip ());
193
- assertEquals ("{\" name\" : \" foo\" }" , query .getQueryObject ().toJson ());
194
- assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
190
+ verify (template ).find (assertArg (query -> {
191
+ assertEquals (50 , query .getLimit ());
192
+ assertEquals (0 , query .getSkip ());
193
+ assertEquals ("{\" name\" : \" foo\" }" , query .getQueryObject ().toJson ());
194
+ assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
195
+ }), eq (String .class ));
195
196
}
196
197
197
198
@ Test
@@ -200,20 +201,17 @@ void testQueryWithCollection() {
200
201
201
202
reader .setQuery ("{ name : ?0 }" );
202
203
reader .setCollection ("collection" );
203
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
204
- ArgumentCaptor <String > collectionContainer = ArgumentCaptor .forClass (String .class );
205
204
206
- when (template .find (queryContainer .capture (), eq (String .class ), collectionContainer .capture ()))
207
- .thenReturn (new ArrayList <>());
205
+ when (template .find (any (), any (), anyString ())).thenReturn (new ArrayList <>());
208
206
209
207
assertFalse (reader .doPageRead ().hasNext ());
210
208
211
- Query query = queryContainer . getValue ();
212
- assertEquals (50 , query .getLimit ());
213
- assertEquals (0 , query .getSkip ());
214
- assertEquals ("{\" name\" : \" foo\" }" , query .getQueryObject ().toJson ());
215
- assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
216
- assertEquals ( "collection" , collectionContainer . getValue ( ));
209
+ verify ( template ). find ( assertArg ( query -> {
210
+ assertEquals (50 , query .getLimit ());
211
+ assertEquals (0 , query .getSkip ());
212
+ assertEquals ("{\" name\" : \" foo\" }" , query .getQueryObject ().toJson ());
213
+ assertEquals ("{\" name\" : -1}" , query .getSortObject ().toJson ());
214
+ }), eq ( String . class ), eq ( "collection" ));
217
215
}
218
216
219
217
@ Test
@@ -227,15 +225,14 @@ void testQueryObject() throws Exception {
227
225
228
226
reader .afterPropertiesSet ();
229
227
230
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
231
- when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <>());
228
+ when (template .find (any (), any ())).thenReturn (new ArrayList <>());
232
229
233
230
assertFalse (reader .doPageRead ().hasNext ());
234
231
235
- Query actualQuery = queryContainer . getValue ();
236
- assertFalse ( reader . doPageRead (). hasNext ());
237
- assertEquals (10 , actualQuery .getLimit ());
238
- assertEquals ( 0 , actualQuery . getSkip ( ));
232
+ verify ( template ). find ( assertArg ( actualQuery -> {
233
+ assertEquals ( 10 , actualQuery . getLimit ());
234
+ assertEquals (0 , actualQuery .getSkip ());
235
+ }), eq ( String . class ));
239
236
}
240
237
241
238
@ Test
@@ -249,15 +246,14 @@ void testQueryObjectWithIgnoredPageSize() throws Exception {
249
246
250
247
reader .afterPropertiesSet ();
251
248
252
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
253
- when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <>());
249
+ when (template .find (any (), any ())).thenReturn (new ArrayList <>());
254
250
255
251
assertFalse (reader .doPageRead ().hasNext ());
256
252
257
- Query actualQuery = queryContainer . getValue ();
258
- assertFalse ( reader . doPageRead (). hasNext ());
259
- assertEquals (10 , actualQuery .getLimit ());
260
- assertEquals ( 0 , actualQuery . getSkip ( ));
253
+ verify ( template ). find ( assertArg ( actualQuery -> {
254
+ assertEquals ( 10 , actualQuery . getLimit ());
255
+ assertEquals (0 , actualQuery .getSkip ());
256
+ }), eq ( String . class ));
261
257
}
262
258
263
259
@ Test
@@ -272,15 +268,14 @@ void testQueryObjectWithPageSize() throws Exception {
272
268
273
269
reader .afterPropertiesSet ();
274
270
275
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
276
- when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <>());
271
+ when (template .find (any (), any ())).thenReturn (new ArrayList <>());
277
272
278
273
assertFalse (reader .doPageRead ().hasNext ());
279
274
280
- Query actualQuery = queryContainer . getValue ();
281
- assertFalse ( reader . doPageRead (). hasNext ());
282
- assertEquals (100 , actualQuery .getLimit ());
283
- assertEquals ( 0 , actualQuery . getSkip ( ));
275
+ verify ( template ). find ( assertArg ( actualQuery -> {
276
+ assertEquals ( 100 , actualQuery . getLimit ());
277
+ assertEquals (0 , actualQuery .getSkip ());
278
+ }), eq ( String . class ));
284
279
}
285
280
286
281
@ Test
@@ -294,13 +289,11 @@ void testQueryObjectWithoutLimit() throws Exception {
294
289
295
290
reader .afterPropertiesSet ();
296
291
297
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
298
- when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <>());
292
+ when (template .find (any (), any ())).thenReturn (new ArrayList <>());
299
293
300
294
assertFalse (reader .doPageRead ().hasNext ());
301
295
302
- Query actualQuery = queryContainer .getValue ();
303
- assertEquals (100 , actualQuery .getLimit ());
296
+ verify (template ).find (assertArg (actualQuery -> assertEquals (100 , actualQuery .getLimit ())), eq (String .class ));
304
297
}
305
298
306
299
@ Test
@@ -313,13 +306,11 @@ void testQueryObjectWithoutLimitAndPageSize() throws Exception {
313
306
314
307
reader .afterPropertiesSet ();
315
308
316
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
317
- when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <>());
309
+ when (template .find (any (), any ())).thenReturn (new ArrayList <>());
318
310
319
311
assertFalse (reader .doPageRead ().hasNext ());
320
312
321
- Query actualQuery = queryContainer .getValue ();
322
- assertEquals (10 , actualQuery .getLimit ());
313
+ verify (template ).find (assertArg (actualQuery -> assertEquals (10 , actualQuery .getLimit ())), eq (String .class ));
323
314
}
324
315
325
316
@ Test
@@ -334,18 +325,15 @@ void testQueryObjectWithCollection() throws Exception {
334
325
335
326
reader .afterPropertiesSet ();
336
327
337
- ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
338
- ArgumentCaptor <String > stringContainer = ArgumentCaptor .forClass (String .class );
339
- when (template .find (queryContainer .capture (), eq (String .class ), stringContainer .capture ()))
340
- .thenReturn (new ArrayList <>());
328
+ when (template .find (any (), any (), anyString ())).thenReturn (new ArrayList <>());
341
329
342
330
assertFalse (reader .doPageRead ().hasNext ());
343
331
344
- Query actualQuery = queryContainer . getValue ();
345
- assertFalse (reader .doPageRead ().hasNext ());
346
- assertEquals (10 , actualQuery .getLimit ());
347
- assertEquals (0 , actualQuery .getSkip ());
348
- assertEquals ( "collection" , stringContainer . getValue ( ));
332
+ verify ( template ). find ( assertArg ( actualQuery -> {
333
+ assertFalse (reader .doPageRead ().hasNext ());
334
+ assertEquals (10 , actualQuery .getLimit ());
335
+ assertEquals (0 , actualQuery .getSkip ());
336
+ }), eq ( String . class ), eq ( "collection" ));
349
337
}
350
338
351
339
@ Test
0 commit comments