package com.zegoggles.smssync.mail;
import com.fsck.k9.mail.Message;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.util.HashMap;
import java.util.Map;
import static org.fest.assertions.api.Assertions.assertThat;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
public class ConversionResultTest {
@Test public void emptyResult() throws Exception {
ConversionResult result = new ConversionResult(DataType.SMS);
assertThat(result.isEmpty()).isTrue();
}
@Test public void shouldAddMessage() throws Exception {
ConversionResult result = new ConversionResult(DataType.SMS);
Message message = mock(Message.class);
when(message.getHeader(anyString())).thenReturn(new String[] {});
Map<String, String> map = new HashMap<String, String>();
result.add(message, map);
assertThat(result.isEmpty()).isFalse();
assertThat(result.getMaxDate()).isEqualTo(-1);
}
@Test public void shouldAddMessageWithValidDate() throws Exception {
ConversionResult result = new ConversionResult(DataType.SMS);
Message message = mock(Message.class);
when(message.getHeader(Headers.DATE)).thenReturn(new String[] { "12345" });
Map<String, String> map = new HashMap<String, String>();
result.add(message, map);
assertThat(result.isEmpty()).isFalse();
assertThat(result.getMaxDate()).isEqualTo(12345);
}
@Test public void shouldAddMessageWithInvalidDate() throws Exception {
ConversionResult result = new ConversionResult(DataType.SMS);
Message message = mock(Message.class);
when(message.getHeader(Headers.DATE)).thenReturn(new String[] { "foo" });
Map<String, String> map = new HashMap<String, String>();
result.add(message, map);
assertThat(result.isEmpty()).isFalse();
assertThat(result.getMaxDate()).isEqualTo(-1);
}
@Test public void shouldAddMessageAndRememberMaxDate() throws Exception {
ConversionResult result = new ConversionResult(DataType.SMS);
Message message = mock(Message.class);
when(message.getHeader(Headers.DATE)).thenReturn(new String[] { "12345" });
Map<String, String> map = new HashMap<String, String>();
result.add(message, map);
assertThat(result.isEmpty()).isFalse();
assertThat(result.getMaxDate()).isEqualTo(12345);
Message newerMessage = mock(Message.class);
when(newerMessage.getHeader(Headers.DATE)).thenReturn(new String[]{"123456789"});
result.add(newerMessage, map);
assertThat(result.getMaxDate()).isEqualTo(123456789);
}
}