public MessageMoveEvent build() { Preconditions.checkNotNull(user, "'user' is mandatory"); Preconditions.checkNotNull(messageMoves, "'messageMoves' is mandatory"); return new MessageMoveEvent(eventId.orElse(EventId.random()), user, messageMoves, messageIds.build()); } }
@Test public void builderShouldThrowWhenSessionIsNull() { assertThatThrownBy(() -> MessageMoveEvent.builder() .build()) .isInstanceOf(NullPointerException.class); }
@Test public void builderShouldBuildWhenFieldsAreGiven() { String username = "user@james.org"; MailboxSession session = MailboxSessionUtil.create(username); MessageMoves messageMoves = MessageMoves.builder() .targetMailboxIds(TestId.of(2)) .previousMailboxIds(TestId.of(1)) .build(); TestMessageId messageId = TestMessageId.of(45); MessageMoveEvent event = MessageMoveEvent.builder() .session(session) .messageMoves(messageMoves) .messageId(messageId) .build(); softly.assertThat(event.getUser()).isEqualTo(User.fromUsername(username)); softly.assertThat(event.getMessageMoves()).isEqualTo(messageMoves); softly.assertThat(event.getMessageIds()).containsExactly(messageId); }
@Test public void isMoveToShouldReturnFalseWhenMailboxIdIsNotInAddedMailboxIds() { MessageMoveEvent event = MessageMoveEvent.builder() .session(MailboxSessionUtil.create("user@james.org")) .messageMoves(MessageMoves.builder() .previousMailboxIds(TestId.of(1)) .targetMailboxIds(TestId.of(2)) .build()) .build(); assertThat(event.isMoveTo(TestId.of(123))).isFalse(); }
@Test public void isMoveFromShouldReturnFalseWhenMailboxIdIsNotInRemovedMailboxIds() { MessageMoveEvent event = MessageMoveEvent.builder() .session(MailboxSessionUtil.create("user@james.org")) .messageMoves(MessageMoves.builder() .previousMailboxIds(TestId.of(1)) .targetMailboxIds(TestId.of(2)) .build()) .build(); assertThat(event.isMoveFrom(TestId.of(123))).isFalse(); }
@Test public void builderShouldReturnNoopWhenMessagesIsEmpty() { assertThat(MessageMoveEvent.builder() .session(MailboxSessionUtil.create("user@james.org")) .messageMoves(MessageMoves.builder() .previousMailboxIds(TestId.of(1)) .targetMailboxIds(TestId.of(2)) .build()) .build() .isNoop()).isTrue(); }
@Test public void isMoveToShouldReturnTrueWhenMailboxIdIsInAddedMailboxIds() { TestId mailboxId = TestId.of(123); MessageMoveEvent event = MessageMoveEvent.builder() .session(MailboxSessionUtil.create("user@james.org")) .messageMoves(MessageMoves.builder() .previousMailboxIds(TestId.of(1)) .targetMailboxIds(TestId.of(2), mailboxId) .build()) .build(); assertThat(event.isMoveTo(mailboxId)).isTrue(); }
@Test public void isMoveFromShouldReturnTrueWhenMailboxIdIsInRemovedMailboxIds() { TestId mailboxId = TestId.of(123); MessageMoveEvent event = MessageMoveEvent.builder() .session(MailboxSessionUtil.create("user@james.org")) .messageMoves(MessageMoves.builder() .previousMailboxIds(TestId.of(1), mailboxId) .targetMailboxIds(TestId.of(2)) .build()) .build(); assertThat(event.isMoveFrom(mailboxId)).isTrue(); } }
@Test public void builderShouldNotBeNoopWhenFieldsAreGiven() { MailboxSession session = MailboxSessionUtil.create("user@james.org"); MessageMoves messageMoves = MessageMoves.builder() .targetMailboxIds(TestId.of(2)) .previousMailboxIds(TestId.of(1)) .build(); MessageMoveEvent event = MessageMoveEvent.builder() .session(session) .messageMoves(messageMoves) .messageId(TestMessageId.of(35)) .build(); assertThat(event.isNoop()).isFalse(); }
@Test public void builderShouldThrowWhenMessageMovesIsNull() { assertThatThrownBy(() -> MessageMoveEvent.builder() .session(MailboxSessionUtil.create("user@james.org")) .build()) .isInstanceOf(NullPointerException.class); }