@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); }
public void syncCalendar(ConversionResult result) { enableSync(); if (result.type != DataType.CALLLOG) return; for (Map<String, String> m : result.getMapList()) { try { final int duration = Integer.parseInt(m.get(CallLog.Calls.DURATION)); final int callType = Integer.parseInt(m.get(CallLog.Calls.TYPE)); final String number = m.get(CallLog.Calls.NUMBER); final Date then = new Date(Long.valueOf(m.get(CallLog.Calls.DATE))); final PersonRecord record = personLookup.lookupPerson(number); // insert into calendar calendarAccessor.addEntry( calendarId, then, duration, callFormatter.callTypeString(callType, record.getName()), callFormatter.formatForCalendar(callType, record.getNumber(), duration)); } catch (NumberFormatException e) { Log.w(TAG, "error", e); } } }
public @NonNull ConversionResult convertMessages(final Cursor cursor, DataType dataType) throws MessagingException { final Map<String, String> msgMap = getMessageMap(cursor); final Message m = messageGenerator.messageForDataType(msgMap, dataType); final ConversionResult result = new ConversionResult(dataType); if (m != null) { m.setFlag(Flag.SEEN, markAsSeen(dataType, msgMap)); result.add(m, msgMap); } return result; }
@Test public void emptyResult() throws Exception { ConversionResult result = new ConversionResult(DataType.SMS); assertThat(result.isEmpty()).isTrue(); }
if (!result.isEmpty()) { List<Message> messages = result.getMessages(); calendarSyncer.syncCalendar(result); preferences.getDataTypePreferences().setMaxSyncedDate(cursor.type, result.getMaxDate()); backedUpItems += messages.size(); } else {
@Test public void testConvertMessagesSeenFlagFromMessageStatusWithSMS() throws Exception { MatrixCursor cursor = new MatrixCursor(new String[] {Telephony.TextBasedSmsColumns.ADDRESS, Telephony.TextBasedSmsColumns.READ} ); cursor.addRow(new Object[]{ "foo", "0" }); cursor.addRow(new Object[]{ "foo", "1" }); cursor.moveToFirst(); PersonRecord record = mock(PersonRecord.class); when(personLookup.lookupPerson(any(String.class))).thenReturn(record); when(record.getAddress(any(AddressStyle.class))).thenReturn(new Address("foo")); when(preferences.getMarkAsReadType()).thenReturn(MarkAsReadTypes.MESSAGE_STATUS); messageConverter = new MessageConverter(RuntimeEnvironment.application, preferences, "foo@example.com", personLookup, contactAccessor); ConversionResult res = messageConverter.convertMessages(cursor, DataType.SMS); assertThat(res.getMessages().get(0).isSet(Flag.SEEN)).isFalse(); cursor.moveToNext(); res = messageConverter.convertMessages(cursor, DataType.SMS); assertThat(res.getMessages().get(0).isSet(Flag.SEEN)).isTrue(); }
private ConversionResult result(DataType type, int n) { ConversionResult result = new ConversionResult(type); for (int i = 0; i<n; i++) { result.add(new MimeMessage(), new HashMap<String, String>()); } return result; }
@Test public void testConvertMessagesSeenFlagUnreadWithSMS() throws Exception { MatrixCursor cursor = new MatrixCursor(new String[] {Telephony.TextBasedSmsColumns.ADDRESS, Telephony.TextBasedSmsColumns.READ} ); cursor.addRow(new Object[]{ "foo", "0" }); cursor.addRow(new Object[]{ "foo", "1" }); cursor.moveToFirst(); PersonRecord record = mock(PersonRecord.class); when(personLookup.lookupPerson(any(String.class))).thenReturn(record); when(record.getAddress(any(AddressStyle.class))).thenReturn(new Address("foo")); when(preferences.getMarkAsReadType()).thenReturn(MarkAsReadTypes.UNREAD); messageConverter = new MessageConverter(RuntimeEnvironment.application, preferences, "foo@example.com", personLookup, contactAccessor); ConversionResult res = messageConverter.convertMessages(cursor, DataType.SMS); assertThat(res.getMessages().get(0).isSet(Flag.SEEN)).isFalse(); cursor.moveToNext(); res = messageConverter.convertMessages(cursor, DataType.SMS); assertThat(res.getMessages().get(0).isSet(Flag.SEEN)).isFalse(); }
@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 shouldSyncCalendar() throws Exception { ConversionResult result = new ConversionResult(DataType.CALLLOG); final String NUMBER = "12345"; final String NAME = "Foo"; final int DURATION = 10; final int TYPE = 1; Date callTime = new Date(); result.add(new MimeMessage(), message(DURATION, TYPE, NUMBER, callTime)); result.add(new MimeMessage(), message(DURATION, TYPE, NUMBER, callTime)); when(callFormatter.callTypeString(TYPE, NAME)).thenReturn("title1"); when(callFormatter.formatForCalendar(TYPE, NUMBER, DURATION)).thenReturn("title2"); when(personLookup.lookupPerson(NUMBER)).thenReturn(new PersonRecord(1, NAME, "foo@bar", NUMBER)); syncer.syncCalendar(result); verify(accessor, times(2)).addEntry(eq(CALENDAR_ID), eq(callTime), eq(DURATION), eq("title1"), eq("title2")); }
@Test public void testConvertMessagesSeenFlagReadWithSMS() throws Exception { MatrixCursor cursor = new MatrixCursor(new String[] {Telephony.TextBasedSmsColumns.ADDRESS, Telephony.TextBasedSmsColumns.READ} ); cursor.addRow(new Object[]{ "foo", "0" }); cursor.addRow(new Object[]{ "foo", "1" }); cursor.moveToFirst(); PersonRecord record = mock(PersonRecord.class); when(personLookup.lookupPerson(any(String.class))).thenReturn(record); when(record.getAddress(any(AddressStyle.class))).thenReturn(new Address("foo")); when(preferences.getMarkAsReadType()).thenReturn(MarkAsReadTypes.READ); messageConverter = new MessageConverter(RuntimeEnvironment.application, preferences, "foo@example.com", personLookup, contactAccessor); ConversionResult res = messageConverter.convertMessages(cursor, DataType.SMS); assertThat(res.getMessages().get(0).isSet(Flag.SEEN)).isTrue(); cursor.moveToNext(); res = messageConverter.convertMessages(cursor, DataType.SMS); assertThat(res.getMessages().get(0).isSet(Flag.SEEN)).isTrue(); }
@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); } }