blob: c84ce34140d1bba70686332652e38566e5193c17 [file] [log] [blame]
/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
* distributed with this work for additional information *
* regarding copyright ownership. The ASF licenses this file *
* to you under the Apache License, Version 2.0 (the *
* "License"); you may not use this file except in compliance *
* with the License. You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, *
* software distributed under the License is distributed on an *
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
* KIND, either express or implied. See the License for the *
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
package org.apache.james.jmap.draft.model;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.jmap.draft.model.mailbox.Mailbox;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.MailboxId;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public class SetMailboxesResponseTest {
@Test
public void builderShouldWork() {
ImmutableMap<MailboxCreationId, Mailbox> created = ImmutableMap.of(MailboxCreationId.of("1"),
Mailbox.builder()
.id(InMemoryId.of(1))
.name("myBox")
.build());
ImmutableList<MailboxId> updated = ImmutableList.of(InMemoryId.of(2));
ImmutableList<MailboxId> destroyed = ImmutableList.of(InMemoryId.of(3));
ImmutableMap<MailboxCreationId, SetError> notCreated = ImmutableMap.of(MailboxCreationId.of("dead-beef-defec8"), SetError.builder().type(SetError.Type.INVALID_PROPERTIES).build());
ImmutableMap<MailboxId, SetError> notUpdated = ImmutableMap.of(InMemoryId.of(4), SetError.builder().type(SetError.Type.INVALID_ARGUMENTS).build());
ImmutableMap<MailboxId, SetError> notDestroyed = ImmutableMap.of(InMemoryId.of(5), SetError.builder().type(SetError.Type.NOT_FOUND).build());
SetMailboxesResponse expected = new SetMailboxesResponse(created, updated, destroyed, notCreated, notUpdated, notDestroyed);
SetMailboxesResponse setMessagesResponse = SetMailboxesResponse.builder()
.created(created)
.updated(updated)
.destroyed(destroyed)
.notCreated(notCreated)
.notUpdated(notUpdated)
.notDestroyed(notDestroyed)
.build();
assertThat(setMessagesResponse).isEqualToComparingFieldByField(expected);
}
@Test
public void mergeIntoShouldCopyItemsWhenBuilderIsEmpty() {
// Given
SetMailboxesResponse.Builder emptyBuilder = SetMailboxesResponse.builder();
SetMailboxesResponse testee = SetMailboxesResponse.builder()
.created(buildMailbox(MailboxCreationId.of("1")))
.destroyed(InMemoryId.of(2))
.notCreated(ImmutableMap.of(MailboxCreationId.of("dead-beef-defec8"), SetError.builder().type(SetError.Type.INVALID_PROPERTIES).build()))
.notDestroyed(ImmutableMap.of(InMemoryId.of(3), SetError.builder().type(SetError.Type.INVALID_PROPERTIES).build()))
.build();
// When
testee.mergeInto(emptyBuilder);
// Then
assertThat(emptyBuilder.build()).isEqualToComparingFieldByField(testee);
}
private ImmutableMap<MailboxCreationId, Mailbox> buildMailbox(MailboxCreationId mailboxId) {
return ImmutableMap.of(mailboxId, Mailbox.builder()
.id(InMemoryId.of(Long.parseLong(mailboxId.getCreationId())))
.name(mailboxId.getCreationId())
.build());
}
@Test
public void mergeIntoShouldMergeCreatedLists() {
// Given
MailboxCreationId buildersCreatedMessageId = MailboxCreationId.of("1");
SetMailboxesResponse.Builder nonEmptyBuilder = SetMailboxesResponse.builder()
.created(buildMailbox(buildersCreatedMessageId));
MailboxCreationId createdMessageId = MailboxCreationId.of("2");
SetMailboxesResponse testee = SetMailboxesResponse.builder()
.created(buildMailbox(createdMessageId))
.build();
// When
testee.mergeInto(nonEmptyBuilder);
SetMailboxesResponse mergedResponse = nonEmptyBuilder.build();
// Then
assertThat(mergedResponse.getCreated().keySet()).containsExactly(buildersCreatedMessageId, createdMessageId);
}
@Test
public void mergeIntoShouldMergeDestroyedLists() {
// Given
InMemoryId buildersDestroyedMessageId = InMemoryId.of(1);
SetMailboxesResponse.Builder nonEmptyBuilder = SetMailboxesResponse.builder()
.destroyed(buildersDestroyedMessageId);
InMemoryId destroyedMessageId = InMemoryId.of(2);
SetMailboxesResponse testee = SetMailboxesResponse.builder()
.destroyed(destroyedMessageId)
.build();
// When
testee.mergeInto(nonEmptyBuilder);
SetMailboxesResponse mergedResponse = nonEmptyBuilder.build();
// Then
assertThat(mergedResponse.getDestroyed()).containsExactly(buildersDestroyedMessageId, destroyedMessageId);
}
}