X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=wot%2Fsrc%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Ffreenet%2Fwot%2FIdentityChangeEventSenderTest.java;fp=wot%2Fsrc%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Ffreenet%2Fwot%2FIdentityChangeEventSenderTest.java;h=fd9fe043693655e68c9cad5cb9da1f77bd48412a;hb=ff91b199987d1ed9934400c5271017f9573362f4;hp=0000000000000000000000000000000000000000;hpb=c22ae93efcd90645b5677f35ae81a9f9c60820f1;p=fwot.git diff --git a/wot/src/test/java/net/pterodactylus/freenet/wot/IdentityChangeEventSenderTest.java b/wot/src/test/java/net/pterodactylus/freenet/wot/IdentityChangeEventSenderTest.java new file mode 100644 index 0000000..fd9fe04 --- /dev/null +++ b/wot/src/test/java/net/pterodactylus/freenet/wot/IdentityChangeEventSenderTest.java @@ -0,0 +1,93 @@ +/* + * Sone - IdentityChangeEventSenderTest.java - Copyright © 2013 David Roden + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.pterodactylus.freenet.wot; + +import static com.google.common.collect.ImmutableMap.of; +import static java.util.Arrays.asList; +import static net.pterodactylus.freenet.wot.Identities.createIdentity; +import static net.pterodactylus.freenet.wot.Identities.createOwnIdentity; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.pterodactylus.freenet.wot.event.IdentityAddedEvent; +import net.pterodactylus.freenet.wot.event.IdentityRemovedEvent; +import net.pterodactylus.freenet.wot.event.IdentityUpdatedEvent; +import net.pterodactylus.freenet.wot.event.OwnIdentityAddedEvent; +import net.pterodactylus.freenet.wot.event.OwnIdentityRemovedEvent; + +import com.google.common.eventbus.EventBus; +import org.junit.Test; + +/** + * Unit test for {@link IdentityChangeEventSender}. + * + * @author David ‘Bombe’ Roden + */ +public class IdentityChangeEventSenderTest { + + private final EventBus eventBus = mock(EventBus.class); + private final List ownIdentities = asList( + createOwnIdentity("O1", Collections.singletonList("Test"), of("KeyA", "ValueA")), + createOwnIdentity("O2", Collections.singletonList("Test2"), of("KeyB", "ValueB")), + createOwnIdentity("O3", Collections.singletonList("Test3"), of("KeyC", "ValueC")) + ); + private final List identities = asList( + createIdentity("I1", Collections.emptyList(), Collections.emptyMap()), + createIdentity("I2", Collections.emptyList(), Collections.emptyMap()), + createIdentity("I3", Collections.emptyList(), Collections.emptyMap()), + createIdentity("I2", Collections.singletonList("Test"), Collections.emptyMap()) + ); + private final IdentityChangeEventSender identityChangeEventSender = new IdentityChangeEventSender(eventBus, createOldIdentities()); + + @Test + public void addingAnOwnIdentityIsDetectedAndReportedCorrectly() { + Map> newIdentities = createNewIdentities(); + identityChangeEventSender.detectChanges(newIdentities); + verify(eventBus).post(eq(new OwnIdentityRemovedEvent(ownIdentities.get(0)))); + verify(eventBus).post(eq(new IdentityRemovedEvent(ownIdentities.get(0), identities.get(0)))); + verify(eventBus).post(eq(new IdentityRemovedEvent(ownIdentities.get(0), identities.get(1)))); + verify(eventBus).post(eq(new OwnIdentityAddedEvent(ownIdentities.get(2)))); + verify(eventBus).post(eq(new IdentityAddedEvent(ownIdentities.get(2), identities.get(1)))); + verify(eventBus).post(eq(new IdentityAddedEvent(ownIdentities.get(2), identities.get(2)))); + verify(eventBus).post(eq(new IdentityRemovedEvent(ownIdentities.get(1), identities.get(0)))); + verify(eventBus).post(eq(new IdentityAddedEvent(ownIdentities.get(1), identities.get(2)))); + verify(eventBus).post(eq(new IdentityUpdatedEvent(ownIdentities.get(1), identities.get(1)))); + } + + private Map> createNewIdentities() { + Map> oldIdentities = new HashMap<>(); + oldIdentities.put(ownIdentities.get(1), asList(identities.get(3), identities.get(2))); + oldIdentities.put(ownIdentities.get(2), asList(identities.get(1), identities.get(2))); + return oldIdentities; + } + + private Map> createOldIdentities() { + Map> oldIdentities = new HashMap<>(); + oldIdentities.put(ownIdentities.get(0), asList(identities.get(0), identities.get(1))); + oldIdentities.put(ownIdentities.get(1), asList(identities.get(0), identities.get(1))); + return oldIdentities; + } + +}