MultiIndexDao implements IndexDao { @Override public Document removeCommentFromAlert(CommentAddRemoveRequest request) throws IOException { Document latest = getLatest(request.getGuid(), request.getSensorType()); return removeCommentFromAlert(request, latest); } MultiIndexDao(IndexDao... composedDao);  MultiIndexDao(Iterable<IndexDao> composedDao);  MultiIndexDao(Iterable<IndexDao> composedDao, Function<IndexDao, IndexDao> decoratorTransformation); @Override Document update(final Document update, Optional<String> index); @Override Map<Document, Optional<String>> batchUpdate(Map<Document, Optional<String>> updates); @Override Map<String, FieldType> getColumnMetadata(List<String> in); @Override Document addCommentToAlert(CommentAddRemoveRequest request); @Override Document addCommentToAlert(CommentAddRemoveRequest request, Document latest); @Override Document removeCommentFromAlert(CommentAddRemoveRequest request); @Override Document removeCommentFromAlert(CommentAddRemoveRequest request, Document latest); @Override SearchResponse search(SearchRequest searchRequest); @Override GroupResponse group(GroupRequest groupRequest); @Override void init(AccessConfig config); @Override Document getLatest(final String guid, String sensorType); @Override Iterable<Document> getAllLatest(List<GetRequest> getRequests); List<IndexDao> getIndices();  }
@Test public void removeCommentShouldRemoveCommentFromAlert() throws Exception { Document latest = mock(Document.class); CommentAddRemoveRequest request = new CommentAddRemoveRequest(); request.setGuid("guid"); when(dao1.removeCommentFromAlert(request, latest)).thenReturn(document1); when(dao2.removeCommentFromAlert(request, latest)).thenReturn(document2); Document expected = new Document(new HashMap<>(), "guid", "bro", 2L); assertEquals(expected, multiIndexDao.removeCommentFromAlert(request, latest)); }
@Test public void shouldThrowExceptionWithPartialFailureOnRemoveComment() throws Exception { Document latest = mock(Document.class); CommentAddRemoveRequest request = new CommentAddRemoveRequest(); request.setGuid("guid"); when(dao1.removeCommentFromAlert(request, latest)).thenReturn(document1); when(dao2.removeCommentFromAlert(request, latest)).thenThrow(new IllegalStateException()); assertThrows(IOException.class, () -> multiIndexDao.removeCommentFromAlert(request, latest)); }