@Test
public void shouldDeliverIntermediateSuccessResponseWithPostRunnable() {

    Object response = new Object();
    BallResponse.ResponseSource responseSource = BallResponse.ResponseSource.LOCAL;
    Runnable postRunnable = mock(Runnable.class);
    when(mRequest.isIntermediateResponseDelivered()).thenReturn(false);
    when(mResponse.isIntermediate()).thenReturn(true);
    when(mResponse.isSuccess()).thenReturn(true);
    when(mResponse.getResult()).thenReturn(response);
    when(mResponse.getResponseSource()).thenReturn(responseSource); // or cache, whatever
    mResponseDelivery.postResponse(mRequest, mResponse, postRunnable);
    verify(mRequest).setIntermediateResponseDelivered(true);
    verify(mRequest).deliverIntermediateResponse(response, responseSource);
    verify(mRequest, new LastInteraction()).isFinalResponseDelivered();
    verify(postRunnable).run();
}