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); } } }
@Test public void shouldFormatForCalendarOutgoing() throws Exception { assertThat(formatter.formatForCalendar(CallLog.Calls.OUTGOING_TYPE, "Foo", 100)) .isEqualTo("Number: Foo (outgoing call)\n" + "Duration: 00:01:40"); }
@Test public void shouldFormatForCalendarMissed() throws Exception { assertThat(formatter.formatForCalendar(CallLog.Calls.MISSED_TYPE, "Foo", 100)) .isEqualTo("Number: Foo (missed call)\n"); } }
@Test public void shouldFormatForCalendarIncoming() throws Exception { assertThat(formatter.formatForCalendar(CallLog.Calls.INCOMING_TYPE, "Foo", 100)) .isEqualTo("Number: Foo (incoming call)\n" + "Duration: 00:01:40"); }
@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")); }