package fr.keemto.provider.exchange.importer;
import com.google.common.collect.Lists;
import fr.keemto.provider.exchange.Email;
import fr.keemto.provider.exchange.TestingEmailMessage;
import microsoft.exchange.webservices.data.EmailMessage;
import org.junit.Test;
import java.util.Date;
import java.util.List;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.*;
public class MailFinderTest {
@Test
public void shouldBuildEmailService() throws Exception {
ExchangeServiceWrapper serviceWrapper = mock(ExchangeServiceWrapper.class);
EmailExchangeService emailService = mock(EmailExchangeService.class);
MailFinder finder = new MailFinder(serviceWrapper);
when(serviceWrapper.getEmailsNewerThan(20L)).thenReturn(emailService);
List<Email> emails = finder.findEmails(20L);
verify(serviceWrapper).getEmailsNewerThan(20L);
}
@Test
public void shouldConvertItemToMail() throws Exception {
Date createdAt = new Date();
TestingEmailMessage message = new TestingEmailMessage("id", "subject", "body", createdAt, "sender@xebia.fr");
message.addRecipients("to@xebia.fr");
message.addRecipients("to2@xebia.fr");
ExchangeServiceWrapper serviceWrapper = mock(ExchangeServiceWrapper.class);
EmailExchangeService emailService = mock(EmailExchangeService.class);
when(serviceWrapper.getEmailsNewerThan(20L)).thenReturn(emailService);
when(emailService.hasMoreElements()).thenReturn(true).thenReturn(false);
when(emailService.nextElement()).thenReturn(Lists.newArrayList((EmailMessage) message));
MailFinder finder = new MailFinder(serviceWrapper);
List<Email> emails = finder.findEmails(20L);
assertThat(emails.size(), is(1));
Email email = emails.get(0);
assertThat(email.getId(), equalTo("id"));
assertThat(email.getFrom(), equalTo("sender@xebia.fr"));
assertThat(email.getSubject(), equalTo("subject"));
assertThat(email.getBody(), equalTo("body"));
assertThat(email.getRecipients(), hasItems("to@xebia.fr", "to2@xebia.fr"));
assertThat(email.getTimestamp(), equalTo(createdAt.getTime()));
}
@Test
public void shouldConvertItemsToMails() throws Exception {
Date createdAt = new Date();
EmailMessage message = new TestingEmailMessage("id", "subject", "body", createdAt, "sender@xebia.fr");
ExchangeServiceWrapper serviceWrapper = mock(ExchangeServiceWrapper.class);
MailFinder finder = new MailFinder(serviceWrapper);
EmailExchangeService emailService = mock(EmailExchangeService.class);
when(serviceWrapper.getEmailsNewerThan(20L)).thenReturn(emailService);
when(emailService.hasMoreElements()).thenReturn(true).thenReturn(false);
when(emailService.nextElement()).thenReturn(Lists.newArrayList(message, message));
List<Email> emails = finder.findEmails(20L);
assertThat(emails.size(), is(2));
}
}