private ImapMessage createImapMessage(String uid) { ImapMessage message = mock(ImapMessage.class); when(message.getUid()).thenReturn(uid); return message; }
private void removeMessages(List<String> removeUids) { List<Message> messages = new ArrayList<>(removeUids.size()); try { List<ImapMessage> existingMessages = getMessagesFromUids(removeUids); for (Message existingMessage : existingMessages) { needsPoll = true; msgSeqUidMap.clear(); String existingUid = existingMessage.getUid(); Timber.w("Message with UID %s still exists on server, not expunging", existingUid); removeUids.remove(existingUid); } for (String uid : removeUids) { ImapMessage message = new ImapMessage(uid, ImapFolderPusher.this); try { message.setFlagInternal(Flag.DELETED, true); } catch (MessagingException me) { Timber.e("Unable to set DELETED flag on message %s", message.getUid()); } messages.add(message); } pushReceiver.messagesRemoved(ImapFolderPusher.this, messages); } catch (Exception e) { Timber.e("Cannot remove EXPUNGEd messages"); } }
private void syncMessages(int end) throws MessagingException { long oldUidNext = getOldUidNext(); List<ImapMessage> messageList = getMessages(end, end, null, true, null); if (messageList != null && messageList.size() > 0) { long newUid = Long.parseLong(messageList.get(0).getUid()); if (K9MailLib.isDebug()) { Timber.i("Got newUid %s for message %d on %s", newUid, end, getLogId()); } long startUid = oldUidNext; if (startUid < newUid - 10) { startUid = newUid - 10; } if (startUid < 1) { startUid = 1; } if (newUid >= startUid) { if (K9MailLib.isDebug()) { Timber.i("Needs sync from uid %d to %d for %s", startUid, newUid, getLogId()); } List<Message> messages = new ArrayList<>(); for (long uid = startUid; uid <= newUid; uid++) { ImapMessage message = new ImapMessage(Long.toString(uid), ImapFolderPusher.this); messages.add(message); } if (!messages.isEmpty()) { pushReceiver.messagesArrived(ImapFolderPusher.this, messages); } } } }
@Test public void getMessageByUid_returnsNewImapMessageWithUidInFolder() throws Exception { ImapFolder folder = createFolder("Folder"); ImapMessage message = folder.getMessage("uid"); assertEquals("uid", message.getUid()); assertEquals(folder, message.getFolder()); }