package fr.keemto.provider.exchange.importer;
import com.google.common.collect.Lists;
import fr.keemto.provider.exchange.JdbcMailRepository;
import fr.keemto.provider.exchange.Email;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Mockito.*;
public class MailImporterTaskTest {
private MailImporterTask task;
private MailFinder finder;
private JdbcMailRepository mailRepository;
@Before
public void prepare() throws Exception {
finder = mock(MailFinder.class);
mailRepository = mock(JdbcMailRepository.class);
task = new MailImporterTask(finder, mailRepository);
}
@Test
public void shouldObtainMailFromFetcher() throws Exception {
task.importMailsNewerThan(20L);
verify(finder).findEmails(20L);
}
@Test
public void shouldPersistFetchedMails() throws Exception {
Email email = mock(Email.class);
when(finder.findEmails(20L)).thenReturn(Lists.newArrayList(email));
task.importMailsNewerThan(20L);
verify(mailRepository).persist(Lists.newArrayList(email));
}
@Test
public void onRunShouldFetchAndPersistMostRecentMails() throws Exception {
Email email = mock(Email.class);
when(finder.findEmails(999)).thenReturn(Lists.newArrayList(email));
when(mailRepository.getMostRecentMailCreationTime()).thenReturn(999L);
task.run();
verify(finder).findEmails(999);
verify(mailRepository).persist(Lists.newArrayList(email));
}
}