25
25
import org .mockito .Mock ;
26
26
import org .mockito .MockitoAnnotations ;
27
27
28
+ import org .springframework .data .domain .PageRequest ;
28
29
import org .springframework .data .domain .Sort ;
30
+ import org .springframework .data .domain .Sort .Order ;
29
31
import org .springframework .data .mongodb .core .MongoOperations ;
30
32
import org .springframework .data .mongodb .core .query .Query ;
31
33
32
34
import static org .junit .Assert .assertEquals ;
33
35
import static org .junit .Assert .assertFalse ;
34
36
import static org .junit .Assert .assertTrue ;
35
37
import static org .junit .Assert .fail ;
36
- import static org .mockito .ArgumentMatchers .eq ;
38
+ import static org .mockito .Matchers .eq ;
37
39
import static org .mockito .Mockito .when ;
38
40
39
41
public class MongoItemReaderTests {
@@ -60,8 +62,8 @@ public void setUp() throws Exception {
60
62
}
61
63
62
64
@ Test
63
- public void testAfterPropertiesSet () throws Exception {
64
- reader = new MongoItemReader <>();
65
+ public void testAfterPropertiesSetForQueryString () throws Exception {
66
+ reader = new MongoItemReader <String >();
65
67
66
68
try {
67
69
reader .afterPropertiesSet ();
@@ -109,6 +111,31 @@ public void testAfterPropertiesSet() throws Exception{
109
111
110
112
reader .afterPropertiesSet ();
111
113
}
114
+
115
+ @ Test
116
+ public void testAfterPropertiesSetForQueryObject () throws Exception {
117
+ reader = new MongoItemReader <String >();
118
+
119
+ reader .setTemplate (template );
120
+ reader .setTargetType (String .class );
121
+
122
+ Query query1 = new Query ();
123
+ reader .setQuery (query1 );
124
+
125
+ try {
126
+ reader .afterPropertiesSet ();
127
+ fail ("Sort was not set but exception was not thrown." );
128
+ } catch (IllegalStateException iae ) {
129
+ assertEquals ("A Sort in Query object is required." , iae .getMessage ());
130
+ } catch (Throwable t ) {
131
+ fail ("Wrong exception was thrown." );
132
+ }
133
+
134
+ Query query2 = new Query ().with (new Sort (new Order (Sort .Direction .ASC , "_id" )));
135
+ reader .setQuery (query2 );
136
+
137
+ reader .afterPropertiesSet ();
138
+ }
112
139
113
140
@ Test
114
141
public void testBasicQueryFirstPage () {
@@ -223,4 +250,102 @@ public void testQueryWithCollection() {
223
250
assertEquals ("{ \" name\" : -1 }" , query .getSortObject ().toJson ());
224
251
assertEquals ("collection" , collectionContainer .getValue ());
225
252
}
253
+
254
+ @ Test
255
+ public void testQueryObject () throws Exception {
256
+ reader = new MongoItemReader <String >();
257
+ reader .setTemplate (template );
258
+
259
+ Query query = new Query ()
260
+ .with (new Sort (new Order (Sort .Direction .ASC , "_id" )));
261
+ reader .setQuery (query );
262
+ reader .setTargetType (String .class );
263
+
264
+ reader .afterPropertiesSet ();
265
+
266
+ ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
267
+ when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <String >());
268
+
269
+ assertFalse (reader .doPageRead ().hasNext ());
270
+
271
+ Query actualQuery = queryContainer .getValue ();
272
+ assertFalse (reader .doPageRead ().hasNext ());
273
+ assertEquals (10 , actualQuery .getLimit ());
274
+ assertEquals (0 , actualQuery .getSkip ());
275
+ }
276
+
277
+ @ Test
278
+ public void testQueryObjectWithIgnoredPageSize () throws Exception {
279
+ reader = new MongoItemReader <String >();
280
+ reader .setTemplate (template );
281
+
282
+ Query query = new Query ()
283
+ .with (new Sort (new Order (Sort .Direction .ASC , "_id" )))
284
+ .with (new PageRequest (0 , 50 ));
285
+ reader .setQuery (query );
286
+ reader .setTargetType (String .class );
287
+
288
+ reader .afterPropertiesSet ();
289
+
290
+ ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
291
+ when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <String >());
292
+
293
+ assertFalse (reader .doPageRead ().hasNext ());
294
+
295
+ Query actualQuery = queryContainer .getValue ();
296
+ assertFalse (reader .doPageRead ().hasNext ());
297
+ assertEquals (10 , actualQuery .getLimit ());
298
+ assertEquals (0 , actualQuery .getSkip ());
299
+ }
300
+
301
+ @ Test
302
+ public void testQueryObjectWithPageSize () throws Exception {
303
+ reader = new MongoItemReader <String >();
304
+ reader .setTemplate (template );
305
+
306
+ Query query = new Query ()
307
+ .with (new Sort (new Order (Sort .Direction .ASC , "_id" )))
308
+ .with (new PageRequest (30 , 50 ));
309
+ reader .setQuery (query );
310
+ reader .setTargetType (String .class );
311
+ reader .setPageSize (100 );
312
+
313
+ reader .afterPropertiesSet ();
314
+
315
+ ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
316
+ when (template .find (queryContainer .capture (), eq (String .class ))).thenReturn (new ArrayList <String >());
317
+
318
+ assertFalse (reader .doPageRead ().hasNext ());
319
+
320
+ Query actualQuery = queryContainer .getValue ();
321
+ assertFalse (reader .doPageRead ().hasNext ());
322
+ assertEquals (100 , actualQuery .getLimit ());
323
+ assertEquals (0 , actualQuery .getSkip ());
324
+ }
325
+
326
+ @ Test
327
+ public void testQueryObjectWithCollection () throws Exception {
328
+ reader = new MongoItemReader <String >();
329
+ reader .setTemplate (template );
330
+
331
+ Query query = new Query ()
332
+ .with (new Sort (new Order (Sort .Direction .ASC , "_id" )));
333
+ reader .setQuery (query );
334
+ reader .setTargetType (String .class );
335
+ reader .setCollection ("collection" );
336
+
337
+ reader .afterPropertiesSet ();
338
+
339
+ ArgumentCaptor <Query > queryContainer = ArgumentCaptor .forClass (Query .class );
340
+ ArgumentCaptor <String > stringContainer = ArgumentCaptor .forClass (String .class );
341
+ when (template .find (queryContainer .capture (), eq (String .class ), stringContainer .capture ())).thenReturn (new ArrayList <String >());
342
+
343
+ assertFalse (reader .doPageRead ().hasNext ());
344
+
345
+ Query actualQuery = queryContainer .getValue ();
346
+ assertFalse (reader .doPageRead ().hasNext ());
347
+ assertEquals (10 , actualQuery .getLimit ());
348
+ assertEquals (0 , actualQuery .getSkip ());
349
+ assertEquals ("collection" , stringContainer .getValue ());
350
+ }
226
351
}
0 commit comments