package uk.ac.ox.zoo.seeg.abraid.mp.modelwrapper.model.commonsexec; import org.apache.commons.exec.ExecuteException; import org.junit.Test; import org.mockito.ArgumentCaptor; import uk.ac.ox.zoo.seeg.abraid.mp.modelwrapper.model.ProcessException; import uk.ac.ox.zoo.seeg.abraid.mp.modelwrapper.model.ProcessHandler; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static uk.ac.ox.zoo.seeg.abraid.mp.testutils.GeneralTestUtils.captorForClass; /** * Tests the ForwardingExecuteResultHandler class. * Copyright (c) 2014 University of Oxford */ public class ForwardingExecuteResultHandlerTest { @Test public void onProcessCompleteShouldBeWrappedCorrectly() throws Exception { // Arrange ProcessHandler mockProcessHandler = mock(ProcessHandler.class); ForwardingExecuteResultHandler target = new ForwardingExecuteResultHandler(mockProcessHandler); // Act target.onProcessComplete(4321); // Assert verify(mockProcessHandler).onProcessComplete(); } @Test public void onProcessFailedShouldWrapCause() throws Exception { // Arrange ProcessHandler mockProcessHandler = mock(ProcessHandler.class); ForwardingExecuteResultHandler target = new ForwardingExecuteResultHandler(mockProcessHandler); ExecuteException expectedCause = new ExecuteException("foo", -123); // Act target.onProcessFailed(expectedCause); // Assert ArgumentCaptor<ProcessException> captor = captorForClass(ProcessException.class); verify(mockProcessHandler).onProcessFailed(captor.capture()); Throwable cause = captor.getValue().getCause(); assertThat(cause).isEqualTo(expectedCause); } }