Package com.nurkiewicz.asyncretry

Source Code of com.nurkiewicz.asyncretry.AsyncRetryContextTest

package com.nurkiewicz.asyncretry;

import org.mockito.InOrder;
import org.testng.annotations.Test;

import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

/**
* @author Tomasz Nurkiewicz
* @since 7/17/13, 9:34 PM
*/
public class AsyncRetryContextTest extends AbstractBaseTestCase {

  @Test
  public void shouldNotRetryIfRetriesForbidden() throws Exception {
    //given
    final RetryExecutor executor = new AsyncRetryExecutor(schedulerMock).dontRetry();

    //when
    executor.doWithRetry(ctx -> serviceMock.withFlag(ctx.willRetry()));

    //then
    verify(serviceMock).withFlag(false);
  }

  @Test
  public void shouldSayItWillRetryIfUnlimitedNumberOfRetries() throws Exception {
    //given
    final RetryExecutor executor = new AsyncRetryExecutor(schedulerMock);

    //when
    executor.doWithRetry(ctx -> serviceMock.withFlag(ctx.willRetry()));

    //then
    verify(serviceMock).withFlag(true);
  }

  @Test
  public void shouldSayItWillRetryOnFirstFewCases() throws Exception {
    //given
    final RetryExecutor executor = new AsyncRetryExecutor(schedulerMock).withMaxRetries(2);
    doThrow(IllegalStateException.class).when(serviceMock).withFlag(anyBoolean());

    //when
    executor.doWithRetry(ctx -> serviceMock.withFlag(ctx.willRetry()));

    //then
    final InOrder order = inOrder(serviceMock);
    order.verify(serviceMock, times(2)).withFlag(true);
    order.verify(serviceMock).withFlag(false);
    order.verifyNoMoreInteractions();
  }

}
TOP

Related Classes of com.nurkiewicz.asyncretry.AsyncRetryContextTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.