MongoItemReader<T> reader = new MongoItemReader<>(); reader.setTemplate(this.template); reader.setTargetType(this.targetType); reader.setQuery(this.jsonQuery); reader.setSort(this.sorts); reader.setHint(this.hint); reader.setFields(this.fields); reader.setCollection(this.collection); reader.setParameterValues(this.parameterValues); reader.setQuery(this.query); reader.setPageSize(this.pageSize); reader.setName(this.name); reader.setSaveState(this.saveState); reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount);
@Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); reader = new MongoItemReader<>(); sortOptions = new HashMap<>(); sortOptions.put("name", Sort.Direction.DESC); reader.setTemplate(template); reader.setTargetType(String.class); reader.setQuery("{ }"); reader.setSort(sortOptions); reader.afterPropertiesSet(); reader.setPageSize(50); }
@SuppressWarnings("serial") @Test public void testQueryWithCollection() { reader.setParameterValues(new ArrayList<Object>(){{ add("foo"); }}); reader.setQuery("{ name : ?0 }"); reader.setCollection("collection"); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); ArgumentCaptor<String> collectionContainer = ArgumentCaptor.forClass(String.class); when(template.find(queryContainer.capture(), eq(String.class), collectionContainer.capture())).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query query = queryContainer.getValue(); assertEquals(50, query.getLimit()); assertEquals(0, query.getSkip()); assertEquals("{ \"name\" : \"foo\" }", query.getQueryObject().toJson()); assertEquals("{ \"name\" : -1 }", query.getSortObject().toJson()); assertEquals("collection", collectionContainer.getValue()); }
@SuppressWarnings("serial") @Test public void testQueryWithParameters() { reader.setParameterValues(new ArrayList<Object>(){{ add("foo"); }}); reader.setQuery("{ name : ?0 }"); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query query = queryContainer.getValue(); assertEquals(50, query.getLimit()); assertEquals(0, query.getSkip()); assertEquals("{ \"name\" : \"foo\" }", query.getQueryObject().toJson()); assertEquals("{ \"name\" : -1 }", query.getSortObject().toJson()); }
@Test public void testQueryWithHint() { reader.setHint("{ $natural : 1}"); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query query = queryContainer.getValue(); assertEquals(50, query.getLimit()); assertEquals(0, query.getSkip()); assertEquals("{ }", query.getQueryObject().toJson()); assertEquals("{ \"name\" : -1 }", query.getSortObject().toJson()); assertEquals("{ $natural : 1}", query.getHint()); }
@Test public void testQueryWithFields() { reader.setFields("{name : 1, age : 1, _id: 0}"); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query query = queryContainer.getValue(); assertEquals(50, query.getLimit()); assertEquals(0, query.getSkip()); assertEquals("{ }", query.getQueryObject().toJson()); assertEquals("{ \"name\" : -1 }", query.getSortObject().toJson()); assertEquals(1, query.getFieldsObject().get("name")); assertEquals(1, query.getFieldsObject().get("age")); assertEquals(0, query.getFieldsObject().get("_id")); }
@Test public void testAfterPropertiesSetForQueryObject() throws Exception{ reader = new MongoItemReader<>(); reader.setTemplate(template); reader.setTargetType(String.class); Query query1 = new Query().with(Sort.by(new Order(Sort.Direction.ASC, "_id"))); reader.setQuery(query1); reader.afterPropertiesSet(); }
MongoItemReader<T> reader = new MongoItemReader<>(); reader.setTemplate(this.template); reader.setTargetType(this.targetType); reader.setQuery(this.jsonQuery); reader.setSort(this.sorts); reader.setHint(this.hint); reader.setFields(this.fields); reader.setCollection(this.collection); reader.setParameterValues(this.parameterValues); reader.setQuery(this.query); reader.setPageSize(this.pageSize); reader.setName(this.name); reader.setSaveState(this.saveState); reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount);
@Test public void testQueryObject() throws Exception { reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))); reader.setQuery(query); reader.setTargetType(String.class); reader.afterPropertiesSet(); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query actualQuery = queryContainer.getValue(); assertFalse(reader.doPageRead().hasNext()); assertEquals(10, actualQuery.getLimit()); assertEquals(0, actualQuery.getSkip()); }
@Test public void testQueryObjectWithPageSize() throws Exception { reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))) .with(PageRequest.of(30, 50)); reader.setQuery(query); reader.setTargetType(String.class); reader.setPageSize(100); reader.afterPropertiesSet(); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query actualQuery = queryContainer.getValue(); assertFalse(reader.doPageRead().hasNext()); assertEquals(100, actualQuery.getLimit()); assertEquals(0, actualQuery.getSkip()); }
@Test public void testQueryObjectWithCollection() throws Exception { reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))); reader.setQuery(query); reader.setTargetType(String.class); reader.setCollection("collection"); reader.afterPropertiesSet(); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); ArgumentCaptor<String> stringContainer = ArgumentCaptor.forClass(String.class); when(template.find(queryContainer.capture(), eq(String.class), stringContainer.capture())).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query actualQuery = queryContainer.getValue(); assertFalse(reader.doPageRead().hasNext()); assertEquals(10, actualQuery.getLimit()); assertEquals(0, actualQuery.getSkip()); assertEquals("collection", stringContainer.getValue()); } }
@Test public void testQueryObjectWithIgnoredPageSize() throws Exception { reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))) .with(PageRequest.of(0, 50)); reader.setQuery(query); reader.setTargetType(String.class); reader.afterPropertiesSet(); ArgumentCaptor<Query> queryContainer = ArgumentCaptor.forClass(Query.class); when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); Query actualQuery = queryContainer.getValue(); assertFalse(reader.doPageRead().hasNext()); assertEquals(10, actualQuery.getLimit()); assertEquals(0, actualQuery.getSkip()); }
@Test public void testAfterPropertiesSetForQueryString() throws Exception{ reader = new MongoItemReader<>(); reader.afterPropertiesSet(); fail("Template was not set but exception was not thrown."); } catch (IllegalStateException iae) { reader.setTemplate(template); reader.afterPropertiesSet(); fail("type was not set but exception was not thrown."); } catch (IllegalStateException iae) { reader.setTargetType(String.class); reader.afterPropertiesSet(); fail("Query was not set but exception was not thrown."); } catch (IllegalStateException iae) { reader.setQuery(""); reader.afterPropertiesSet(); fail("Sort was not set but exception was not thrown."); } catch (IllegalStateException iae) { reader.setSort(sortOptions); reader.afterPropertiesSet();