@Test
public void executeBlockingCall_calls_delegate_with_callable_that_provides_converted_event_and_returns_the_original_event()
    throws Exception {

    // given
    CircuitBreaker<String> delegateCbSpy = spy(new CircuitBreakerImpl<>());
    CircuitBreakerDelegate<Integer, String> wrapperCb = new CircuitBreakerDelegate<>(delegateCbSpy, eventConverter);
    int event = 42;
    Callable<Integer> wrapperSupplier = () -> event;
    // when
    Integer wrapperCallResult = wrapperCb.executeBlockingCall(wrapperSupplier);
    // then
    ArgumentCaptor<Callable> delegateCallArgumentCaptor = ArgumentCaptor.forClass(Callable.class);
    verify(delegateCbSpy).executeBlockingCall(delegateCallArgumentCaptor.capture());
    Callable<String> delegateCallable = delegateCallArgumentCaptor.getValue();
    assertThat(wrapperCallResult).isEqualTo(event);
    assertThat(delegateCallable.call()).isEqualTo(eventConverter.apply(event));
}