View Javadoc
1   package net.secodo.jcircuitbreaker.breaker.impl;
2   
3   import net.secodo.jcircuitbreaker.breaker.CircuitBreaker;
4   import net.secodo.jcircuitbreaker.breaker.execution.ExecutionContext;
5   import net.secodo.jcircuitbreaker.breakhandler.BreakHandler;
6   import net.secodo.jcircuitbreaker.breakhandler.impl.NoActionHandler;
7   import net.secodo.jcircuitbreaker.breakstrategy.BreakStrategy;
8   import net.secodo.jcircuitbreaker.exception.TaskExecutionException;
9   import net.secodo.jcircuitbreaker.task.Task;
10  import net.secodo.jcircuitbreaker.task.VoidTask;
11  import org.junit.Test;
12  
13  import static org.mockito.Matchers.any;
14  import static org.mockito.Matchers.anyInt;
15  import static org.mockito.Mockito.*;
16  
17  public class DefaultCircuitBreakerVoidMethodsTest {
18  
19    @Test
20    public void shouldCorrectlyExecuteVoidMethod() throws TaskExecutionException {
21      // given
22      final CircuitBreaker circuitBreaker = new DefaultCircuitBreaker();
23      final SomeInterfaceWithVoidMethod someObject = mock(SomeInterfaceWithVoidMethod.class);
24      doAnswer(invocation -> 555).when(someObject).someMethod(anyInt());
25  
26      final VoidTask task = () -> someObject.someMethod(1);
27  
28      final BreakStrategy<Void> breakStrategy = mock(BreakStrategy.class);
29      when(breakStrategy.shouldBreak(any(Task.class), any(ExecutionContext.class))).thenReturn(false);
30  
31      final BreakHandler<Void> breakHandler = new NoActionHandler<>();
32  
33      // when
34      circuitBreaker.execute(task, breakStrategy, breakHandler);
35  
36      // then
37      verify(someObject).someMethod(1);
38  
39  
40    }
41  
42  
43    interface SomeInterfaceWithVoidMethod {
44      void someMethod(Integer someParam);
45    }
46  
47  
48  }