package org.zalando.catwatch.backend.scheduler;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.zalando.catwatch.backend.CatWatchBackendApplication;
import org.zalando.catwatch.backend.mail.MailSender;
import static org.mockito.Mockito.*;
public class MailOnRetryTest {
private final static int MAX_ATTEMPTS = 1;
private final Fetcher fetcher = mock(Fetcher.class);
private final MailSender mailSender = mock(MailSender.class);
private final RetryableFetcher retryableFetcher = new RetryableFetcher(fetcher, MAX_ATTEMPTS, 0, 0, 0, mailSender);
@Test
public void shouldSendMailOnCrawlerFailure() throws Exception {
CrawlerRetryException crawlerRetryException = new CrawlerRetryException(new RuntimeException());
when(fetcher.fetchData())
.thenThrow(crawlerRetryException);
when(mailSender.send(crawlerRetryException)).thenReturn(true);
retryableFetcher.tryFetchData();
verify(mailSender, times(1)).send(crawlerRetryException);
}
}