/* * Sone - IdentityChangeEventSenderTest.kt - Copyright © 2013–2020 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.sone.freenet.wot import com.google.common.eventbus.EventBus import com.google.common.eventbus.Subscribe import net.pterodactylus.sone.freenet.wot.event.IdentityAddedEvent import net.pterodactylus.sone.freenet.wot.event.IdentityRemovedEvent import net.pterodactylus.sone.freenet.wot.event.IdentityUpdatedEvent import net.pterodactylus.sone.freenet.wot.event.OwnIdentityAddedEvent import net.pterodactylus.sone.freenet.wot.event.OwnIdentityRemovedEvent import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.contains import org.hamcrest.Matchers.containsInAnyOrder import org.junit.Test /** * Unit test for [IdentityChangeEventSender]. */ class IdentityChangeEventSenderTest { private val eventBus = EventBus() private val ownIdentities = listOf( createOwnIdentity("O1", setOf("Test"), "KeyA" to "ValueA"), createOwnIdentity("O2", setOf("Test2"), "KeyB" to "ValueB"), createOwnIdentity("O3", setOf("Test3"), "KeyC" to "ValueC") ) private val identities = listOf( createIdentity("I1", setOf()), createIdentity("I2", setOf()), createIdentity("I3", setOf()), createIdentity("I2", setOf("Test")) ) private val identityChangeEventSender = IdentityChangeEventSender(eventBus, createOldIdentities()) @Test fun addingAnOwnIdentityIsDetectedAndReportedCorrectly() { val newIdentities = createNewIdentities() val ownIdentityRemovedEvents = mutableListOf() eventBus.register(object { @Subscribe fun ownIdentityRemoved(ownIdentityRemovedEvent: OwnIdentityRemovedEvent) { ownIdentityRemovedEvents += ownIdentityRemovedEvent } }) val identityRemovedEvents = mutableListOf() eventBus.register(object { @Subscribe fun identityRemovedEvent(identityRemovedEvent: IdentityRemovedEvent) { identityRemovedEvents += identityRemovedEvent } }) val owIdentityAddedEvents = mutableListOf() eventBus.register(object { @Subscribe fun ownIdentityAdded(ownIdentityAddedEvent: OwnIdentityAddedEvent) { owIdentityAddedEvents += ownIdentityAddedEvent } }) val identityAddedEvents = mutableListOf() eventBus.register(object { @Subscribe fun identityAdded(identityAddedEvent: IdentityAddedEvent) { identityAddedEvents += identityAddedEvent } }) val identityUpdatedEvents = mutableListOf() eventBus.register(object { @Subscribe fun identityUpdatedEvent(identityUpdatedEvent: IdentityUpdatedEvent) { identityUpdatedEvents += identityUpdatedEvent } }) identityChangeEventSender.detectChanges(newIdentities) assertThat(ownIdentityRemovedEvents, contains(OwnIdentityRemovedEvent(ownIdentities[0]))) assertThat(identityRemovedEvents, containsInAnyOrder( IdentityRemovedEvent(ownIdentities[0], identities[0]), IdentityRemovedEvent(ownIdentities[0], identities[1]), IdentityRemovedEvent(ownIdentities[1], identities[0]) )) assertThat(owIdentityAddedEvents, contains(OwnIdentityAddedEvent(ownIdentities[2]))) assertThat(identityAddedEvents, containsInAnyOrder( IdentityAddedEvent(ownIdentities[2], identities[1]), IdentityAddedEvent(ownIdentities[2], identities[2]), IdentityAddedEvent(ownIdentities[1], identities[2]) )) assertThat(identityUpdatedEvents, contains(IdentityUpdatedEvent(ownIdentities[1], identities[1]))) } private fun createNewIdentities() = mapOf( ownIdentities[1] to listOf(identities[3], identities[2]), ownIdentities[2] to listOf(identities[1], identities[2]) ) private fun createOldIdentities() = mapOf( ownIdentities[0] to listOf(identities[0], identities[1]), ownIdentities[1] to listOf(identities[0], identities[1]) ) }