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
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
34 circuitBreaker.execute(task, breakStrategy, breakHandler);
35
36
37 verify(someObject).someMethod(1);
38
39
40 }
41
42
43 interface SomeInterfaceWithVoidMethod {
44 void someMethod(Integer someParam);
45 }
46
47
48 }