package uk.ac.ox.zoo.seeg.abraid.mp.modeloutputhandler.web;
import org.apache.log4j.Logger;
import org.junit.Test;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ModelRun;
import uk.ac.ox.zoo.seeg.abraid.mp.testutils.GeneralTestUtils;
import static org.mockito.Mockito.*;
/**
* Tests the HandlersAsyncWrapper class.
* Copyright (c) 2014 University of Oxford
*/
public class HandlersAsyncWrapperTest {
@Test
public void handlersAreCalledSuccessfully() throws Exception {
// Arrange
BatchingHandler batchingHandler = mock(BatchingHandler.class);
HandlersAsyncWrapper wrapper = new HandlersAsyncWrapper(batchingHandler);
ModelRun modelRun = new ModelRun();
// Act
wrapper.handle(modelRun).get();
// Assert
verify(batchingHandler).handle(same(modelRun));
}
@Test
public void exceptionThrownByAHandlerIsCaught() throws Exception {
// Arrange
BatchingHandler batchingHandler = mock(BatchingHandler.class);
HandlersAsyncWrapper wrapper = new HandlersAsyncWrapper(batchingHandler);
Logger mockLogger = GeneralTestUtils.createMockLogger(wrapper);
ModelRun modelRun = new ModelRun();
RuntimeException exception = new RuntimeException("Test message");
doThrow(exception).when(batchingHandler).handle(modelRun);
// Act
wrapper.handle(modelRun).get();
// Assert
verify(mockLogger).error(exception);
}
}