public MessageMoveEvent moved(MailboxSession session, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) { return MessageMoveEvent.builder() .session(session) .messageMoves(messageMoves) .messages(messages) .build(); } }
public MessageMoveEvent build() { Preconditions.checkNotNull(session, "'session' is mandatory"); Preconditions.checkNotNull(messageMoves, "'messageMoves' is mandatory"); ImmutableMap<MessageUid, MailboxMessage> messages = messagesBuilder.build(); return new MessageMoveEvent(session, messageMoves, messages); } }
public void moved(MailboxSession session, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) { MessageMoveEvent moveEvent = eventFactory.moved(session, messageMoves, messages); if (!moveEvent.isNoop()) { listener.event(moveEvent); } }
@Test public void isEventOnSpamMailboxShouldReturnFalseWhenMailboxIsSpamOtherCase() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(mailboxId1) .targetMailboxIds(spamCapitalMailboxId) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId1))) .build(); assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isFalse(); }
@Test public void eventShouldCallSpamAssassinSpamLearningWhenTheEventMatches() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(mailboxId1) .targetMailboxIds(spamMailboxId) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId1))) .build(); listener.event(messageMoveEvent); verify(spamAssassin).learnSpam(any(), any()); }
@Test public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedOutOfCapitalSpamMailbox() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(spamCapitalMailboxId) .targetMailboxIds(mailboxId2) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId2))) .build(); assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse(); }
@Test public void isEventOnSpamMailboxShouldReturnTrueWhenMailboxIsSpam() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(mailboxId1) .targetMailboxIds(spamMailboxId) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId1))) .build(); assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isTrue(); }
@Test public void eventShouldCallSpamAssassinHamLearningWhenTheEventMatches() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(spamMailboxId) .targetMailboxIds(mailboxId1) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId1))) .build(); listener.event(messageMoveEvent); verify(spamAssassin).learnHam(any(), any()); }
@Test public void isMessageMovedOutOfSpamMailboxShouldReturnTrueWhenMessageMovedOutOfSpamMailbox() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(spamMailboxId) .targetMailboxIds(mailboxId2) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId2))) .build(); assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isTrue(); }
@Test public void isEventOnSpamMailboxShouldReturnFalseWhenMessageIsMovedToANonSpamMailbox() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(mailboxId1) .targetMailboxIds(mailboxId2) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId2))) .build(); assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isFalse(); }
@Test public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedBetweenNonSpamMailboxes() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(mailboxId1) .targetMailboxIds(mailboxId2) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId2))) .build(); assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse(); }
@Test public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedToTrash() { MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder() .session(MAILBOX_SESSION) .messageMoves(MessageMoves.builder() .previousMailboxIds(spamMailboxId) .targetMailboxIds(trashMailboxId) .build()) .messages(ImmutableMap.of(MessageUid.of(45), createMessage(mailboxId2))) .build(); assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse(); }