@Test public void testGroupByAnnotations() throws Exception { AbstractManager.MyResourceId vs1 = catalogManager.getStudyManager().getVariableSetId("vs", studyFqn, sessionIdUser); QueryResult queryResult = catalogManager.getSampleManager().groupBy(studyFqn, new Query(), Collections.singletonList(Constants.ANNOTATION + ":" + vs1.getResourceId() + ":annot1:PHEN"), QueryOptions.empty(), sessionIdUser); assertEquals(3, queryResult.getNumResults()); for (Document document : (List<Document>) queryResult.getResult()) { Document id = (Document) document.get("_id"); List<String> value = ((ArrayList<String>) id.values().iterator().next()); List<String> items = (List<String>) document.get("items"); if (value.isEmpty()) { assertEquals(4, items.size()); assertTrue(items.containsAll(Arrays.asList("s_6", "s_7", "s_8", "s_9"))); } else if ("CONTROL".equals(value.get(0))) { assertEquals(3, items.size()); assertTrue(items.containsAll(Arrays.asList("s_1", "s_3", "s_4"))); } else if ("CASE".equals(value.get(0))) { assertEquals(2, items.size()); assertTrue(items.containsAll(Arrays.asList("s_2", "s_5"))); } else { fail("It should not get into this condition"); } } }