RestoreTask(SmsRestoreService service, MessageConverter converter, ContentResolver resolver, TokenRefresher tokenRefresher) { this.service = service; this.converter = converter; this.resolver = resolver; this.tokenRefresher = tokenRefresher; this.preferences = service.getPreferences(); }
@Before public void before() throws MessagingException { initMocks(this); config = new RestoreConfig(store, 0, true, false, false, -1, 0); when(service.getApplicationContext()).thenReturn(RuntimeEnvironment.application); when(service.getState()).thenReturn(state); when(service.getPreferences()).thenReturn(new Preferences(RuntimeEnvironment.application)); when(store.getFolder(any(DataType.class), any(DataTypePreferences.class))).thenReturn(folder); task = new RestoreTask(service, converter, resolver, tokenRefresher); }
@Test public void shouldRestoreItems() throws Exception { Date now = new Date(); List<ImapMessage> messages = new ArrayList<ImapMessage>(); ContentValues values = new ContentValues(); values.put(Telephony.TextBasedSmsColumns.TYPE, Telephony.TextBasedSmsColumns.MESSAGE_TYPE_INBOX); values.put(Telephony.TextBasedSmsColumns.DATE, now.getTime()); ImapMessage mockMessage = mock(ImapMessage.class); when(mockMessage.getFolder()).thenReturn(folder); when(converter.getDataType(mockMessage)).thenReturn(DataType.SMS); when(converter.messageToContentValues(mockMessage)).thenReturn(values); messages.add(mockMessage); when(folder.getMessages(anyInt(), anyBoolean(), any(Date.class))).thenReturn(messages); when(resolver.insert(Consts.SMS_PROVIDER, values)).thenReturn(Uri.parse("content://sms/123")); task.doInBackground(config); verify(resolver).insert(Consts.SMS_PROVIDER, values); verify(resolver).delete(Uri.parse("content://sms/conversations/-1"), null, null); assertThat(service.getPreferences().getDataTypePreferences().getMaxSyncedDate(DataType.SMS)).isEqualTo(now.getTime()); assertThat(task.getSmsIds()).containsExactly("123"); verify(store).closeFolders(); } }
final boolean restoreCallLog = getPreferences().getDataTypePreferences().isRestoreEnabled(CALLLOG); final boolean restoreSms = getPreferences().getDataTypePreferences().isRestoreEnabled(SMS); getPreferences(), getAuthPreferences().getUserEmail(), new PersonLookup(getContentResolver()), restoreSms, restoreCallLog, getPreferences().isRestoreStarredOnly(), getPreferences().getMaxItemsPerRestore(),