diff --git a/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt b/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt index 8464cfe..209ebe4 100644 --- a/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/EventDispatcherTest.kt @@ -8,7 +8,6 @@ import no.iktdev.eventi.events.EventListenerRegistry import no.iktdev.eventi.events.EventTypeRegistry import no.iktdev.eventi.models.DeleteEvent import no.iktdev.eventi.models.Event -import no.iktdev.eventi.models.Metadata import no.iktdev.eventi.testUtil.wipe import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Assertions.assertEquals @@ -34,9 +33,6 @@ class EventDispatcherTest : TestBase() { class TriggerEvent : Event() class OtherEvent : Event() class DummyEvent : Event() { - fun putMetadata(metadata: Metadata) { - this.metadata = metadata - } } @BeforeEach @@ -61,7 +57,7 @@ class EventDispatcherTest : TestBase() { Så skal kun én ny event produseres og prosessen stoppe """) fun shouldProduceOneEventAndStop() { - val listener = ProducingListener() + ProducingListener() val trigger = TriggerEvent() dispatcher.dispatch(trigger.referenceId, listOf(trigger)) @@ -71,7 +67,7 @@ class EventDispatcherTest : TestBase() { val event = produced!!.toEvent() assertThat(event!!.metadata.derivedFromId).hasSize(1) - assertThat(event!!.metadata.derivedFromId).contains(trigger.eventId) + assertThat(event.metadata.derivedFromId).contains(trigger.eventId) assertTrue(event is DerivedEvent) } @@ -82,14 +78,14 @@ class EventDispatcherTest : TestBase() { Så skal ikke DerivedEvent produseres på nytt """) fun shouldSkipAlreadyDerivedEvents() { - val listener = ProducingListener() + ProducingListener() val trigger = TriggerEvent() val derived = DerivedEvent().derivedOf(trigger).toPersisted(1L, MyTime.utcNow()) eventStore.persist(derived!!.toEvent()!!) // simulate prior production - dispatcher.dispatch(trigger.referenceId, listOf(trigger, derived!!.toEvent()!!)) + dispatcher.dispatch(trigger.referenceId, listOf(trigger, derived.toEvent()!!)) assertEquals(1, eventStore.all().size) } @@ -117,7 +113,7 @@ class EventDispatcherTest : TestBase() { Så skal ikke DerivedEvent produseres på nytt """) fun shouldBehaveDeterministicallyAcrossReplays() { - val listener = ProducingListener() + ProducingListener() val trigger = TriggerEvent() dispatcher.dispatch(trigger.referenceId, listOf(trigger)) @@ -173,8 +169,8 @@ class EventDispatcherTest : TestBase() { """) fun shouldDeliverDeleteEventToListenersThatReactToIt() { val received = mutableListOf() - val listener = object : EventListener() { - override fun onEvent(event: Event, context: List): Event? { + object : EventListener() { + override fun onEvent(event: Event, history: List): Event? { if (event is DeleteEvent) received += event return null } @@ -193,7 +189,7 @@ class EventDispatcherTest : TestBase() { Så skal ikke original-eventen leveres som kandidat igjen """) fun shouldNotRedeliverEventsThatHaveProducedDerivedEvents() { - val listener = ProducingListener() + ProducingListener() val trigger = TriggerEvent() // Første dispatch: trigger produserer en DerivedEvent @@ -228,7 +224,7 @@ class EventDispatcherTest : TestBase() { var receivedHistory: List = emptyList() - val listener = object : EventListener() { + object : EventListener() { override fun onEvent(event: Event, history: List): Event? { receivedHistory = history return null @@ -256,7 +252,7 @@ class EventDispatcherTest : TestBase() { var receivedHistory: List = emptyList() - val listener = object : EventListener() { + object : EventListener() { override fun onEvent(event: Event, history: List): Event? { receivedHistory = history return null @@ -285,7 +281,7 @@ class EventDispatcherTest : TestBase() { var receivedEvent: Event? = null var receivedHistory: List = emptyList() - val listener = object : EventListener() { + object : EventListener() { override fun onEvent(event: Event, history: List): Event? { receivedEvent = event receivedHistory = history @@ -302,15 +298,15 @@ class EventDispatcherTest : TestBase() { // --- Test helpers --- class ProducingListener : EventListener() { - override fun onEvent(event: Event, context: List): Event? { + override fun onEvent(event: Event, history: List): Event? { return if (event is TriggerEvent) DerivedEvent().derivedOf(event) else null } } class ContextCapturingListener : EventListener() { var context: List = emptyList() - override fun onEvent(event: Event, context: List): Event? { - this.context = context + override fun onEvent(event: Event, history: List): Event? { + this.context = history return null } } diff --git a/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt b/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt index ed97f53..0dc789e 100644 --- a/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/events/EventPollerImplementationTest.kt @@ -8,7 +8,6 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.test.runTest import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeout -import no.iktdev.eventi.EventDispatcherTest import no.iktdev.eventi.EventDispatcherTest.DerivedEvent import no.iktdev.eventi.EventDispatcherTest.OtherEvent import no.iktdev.eventi.EventDispatcherTest.TriggerEvent @@ -65,7 +64,7 @@ class EventPollerImplementationTest : TestBase() { EventListenerRegistry.registerListener( object : EventListener() { - override fun onEvent(event: Event, context: List): Event? { + override fun onEvent(event: Event, history: List): Event? { dispatched += event.referenceId completionMap[event.referenceId]?.complete(Unit) return null @@ -133,7 +132,7 @@ class EventPollerImplementationTest : TestBase() { EventTypeRegistry.register(listOf(TriggerEvent::class.java)) object : EventListener() { - override fun onEvent(event: Event, context: List): Event? { + override fun onEvent(event: Event, history: List): Event? { received += event if (received.size == 3) done.complete(Unit) return null @@ -186,7 +185,7 @@ class EventPollerImplementationTest : TestBase() { val handled = mutableListOf() object : EventListener() { - override fun onEvent(event: Event, context: List): Event? { + override fun onEvent(event: Event, history: List): Event? { if (event !is EchoEvent) return null handled += event channel.trySend(event) diff --git a/src/test/kotlin/no/iktdev/eventi/events/RunSimulationTest.kt b/src/test/kotlin/no/iktdev/eventi/events/RunSimulationTest.kt index e871081..f5e78d5 100644 --- a/src/test/kotlin/no/iktdev/eventi/events/RunSimulationTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/events/RunSimulationTest.kt @@ -1,7 +1,7 @@ +@file:OptIn(ExperimentalCoroutinesApi::class) + package no.iktdev.eventi.events -import io.mockk.every -import io.mockk.mockk import kotlinx.coroutines.* import kotlinx.coroutines.test.* import no.iktdev.eventi.InMemoryEventStore @@ -9,9 +9,6 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.util.UUID -import kotlinx.coroutines.* -import no.iktdev.eventi.MyTime -import no.iktdev.eventi.ZDS.toPersisted import no.iktdev.eventi.models.Event import no.iktdev.eventi.models.Metadata import org.junit.jupiter.api.DisplayName @@ -89,7 +86,7 @@ class RunSimulationTestTest { } } - private fun persistEvent(ref: UUID, time: Instant) { + private fun persistEvent(ref: UUID) { val e = TestEvent().withReference(ref) store.persist(e.setMetadata(Metadata())) } @@ -102,9 +99,8 @@ class RunSimulationTestTest { """) fun pollerUpdatesLastSeenTimeWhenDispatchHappens() = runTest(testDispatcher) { val ref = UUID.randomUUID() - val t = Instant.parse("2026-01-22T12:00:00Z") - persistEvent(ref, t) + persistEvent(ref) poller.pollOnce() advanceUntilIdle() @@ -149,9 +145,8 @@ class RunSimulationTestTest { """) fun pollerDoesNotDoubleDispatch() = runTest(testDispatcher) { val ref = UUID.randomUUID() - val t = Instant.parse("2026-01-22T12:00:00Z") - persistEvent(ref, t) + persistEvent(ref) poller.pollOnce() advanceUntilIdle() @@ -171,10 +166,9 @@ class RunSimulationTestTest { fun pollerHandlesMultipleReferenceIds() = runTest(testDispatcher) { val refA = UUID.randomUUID() val refB = UUID.randomUUID() - val t = Instant.parse("2026-01-22T12:00:00Z") - persistEvent(refA, t) - persistEvent(refB, t.plusSeconds(1)) + persistEvent(refA) + persistEvent(refB) poller.pollOnce() advanceUntilIdle() @@ -191,10 +185,9 @@ class RunSimulationTestTest { fun pollerHandlesIdenticalTimestamps() = runTest(testDispatcher) { val refA = UUID.randomUUID() val refB = UUID.randomUUID() - val t = Instant.parse("2026-01-22T12:00:00Z") - persistEvent(refA, t) - persistEvent(refB, t) + persistEvent(refA) + persistEvent(refB) poller.pollOnce() advanceUntilIdle() @@ -242,9 +235,8 @@ class RunSimulationTestTest { fun pollerProcessesEventsArrivingWhileQueueBusy() = runTest(testDispatcher) { val ref = UUID.randomUUID() val t1 = Instant.parse("2026-01-22T12:00:00Z") - val t2 = t1.plusSeconds(5) - persistEvent(ref, t1) + persistEvent(ref) val controlledQueue = ControlledDispatchQueue(scope) controlledQueue.busyRefs += ref @@ -261,7 +253,7 @@ class RunSimulationTestTest { controlledQueue.busyRefs.clear() // Add new event - persistEvent(ref, t2) + persistEvent(ref) // Poll #2: should dispatch both events poller.pollOnce() diff --git a/src/test/kotlin/no/iktdev/eventi/events/SequenceDispatchQueueTest.kt b/src/test/kotlin/no/iktdev/eventi/events/SequenceDispatchQueueTest.kt index 89eff8e..7f9953d 100644 --- a/src/test/kotlin/no/iktdev/eventi/events/SequenceDispatchQueueTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/events/SequenceDispatchQueueTest.kt @@ -51,7 +51,7 @@ class SequenceDispatchQueueTest : TestBase() { EventListenerRegistry.registerListener( object : EventListener() { - override fun onEvent(event: Event, context: List): Event? { + override fun onEvent(event: Event, history: List): Event? { dispatched += event.referenceId Thread.sleep(50) // simuler tung prosessering return null diff --git a/src/test/kotlin/no/iktdev/eventi/events/poller/PollerStartLoopTest.kt b/src/test/kotlin/no/iktdev/eventi/events/poller/PollerStartLoopTest.kt index 32d3c84..930dd9f 100644 --- a/src/test/kotlin/no/iktdev/eventi/events/poller/PollerStartLoopTest.kt +++ b/src/test/kotlin/no/iktdev/eventi/events/poller/PollerStartLoopTest.kt @@ -1,5 +1,6 @@ package no.iktdev.eventi.events.poller +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.* import no.iktdev.eventi.InMemoryEventStore import no.iktdev.eventi.MyTime @@ -23,6 +24,7 @@ import org.assertj.core.api.Assertions.assertThat import java.time.Duration +@ExperimentalCoroutinesApi @DisplayName(""" EventPollerImplementation – start-loop Når polleren kjører i en kontrollert test-loop diff --git a/src/test/kotlin/no/iktdev/eventi/events/poller/TestablePoller.kt b/src/test/kotlin/no/iktdev/eventi/events/poller/TestablePoller.kt index b42aea4..764c4fa 100644 --- a/src/test/kotlin/no/iktdev/eventi/events/poller/TestablePoller.kt +++ b/src/test/kotlin/no/iktdev/eventi/events/poller/TestablePoller.kt @@ -1,5 +1,6 @@ package no.iktdev.eventi.events.poller +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceTimeBy import no.iktdev.eventi.events.EventDispatcher @@ -9,6 +10,7 @@ import no.iktdev.eventi.stores.EventStore import java.time.Instant import java.util.UUID +@ExperimentalCoroutinesApi class TestablePoller( eventStore: EventStore, dispatchQueue: SequenceDispatchQueue, diff --git a/src/test/kotlin/no/iktdev/eventi/testUtil/EventListenerRegistryUtil.kt b/src/test/kotlin/no/iktdev/eventi/testUtil/EventListenerRegistryUtil.kt index 7f3cc70..8346649 100644 --- a/src/test/kotlin/no/iktdev/eventi/testUtil/EventListenerRegistryUtil.kt +++ b/src/test/kotlin/no/iktdev/eventi/testUtil/EventListenerRegistryUtil.kt @@ -13,6 +13,7 @@ fun EventListenerRegistry.wipe() { // Tøm map’en val mutableList = field.get(EventListenerRegistry) as MutableList<*> + @Suppress("UNCHECKED_CAST") (mutableList as MutableList>).clear() // Verifiser at det er tomt diff --git a/src/test/kotlin/no/iktdev/eventi/testUtil/EventTypeRegistryUtil.kt b/src/test/kotlin/no/iktdev/eventi/testUtil/EventTypeRegistryUtil.kt index 14f018e..4bdc674 100644 --- a/src/test/kotlin/no/iktdev/eventi/testUtil/EventTypeRegistryUtil.kt +++ b/src/test/kotlin/no/iktdev/eventi/testUtil/EventTypeRegistryUtil.kt @@ -13,6 +13,7 @@ fun EventTypeRegistry.wipe() { // Tøm map’en val typesMap = field.get(EventTypeRegistry) as MutableMap<*, *> + @Suppress("UNCHECKED_CAST") (typesMap as MutableMap>).clear() // Verifiser at det er tomt diff --git a/src/test/kotlin/no/iktdev/eventi/testUtil/TaskListenerRegistryUtil.kt b/src/test/kotlin/no/iktdev/eventi/testUtil/TaskListenerRegistryUtil.kt index d099a1b..a7b78a6 100644 --- a/src/test/kotlin/no/iktdev/eventi/testUtil/TaskListenerRegistryUtil.kt +++ b/src/test/kotlin/no/iktdev/eventi/testUtil/TaskListenerRegistryUtil.kt @@ -15,6 +15,7 @@ fun TaskListenerRegistry.wipe() { // Tøm map’en val mutableList = field.get(TaskListenerRegistry) as MutableList<*> + @Suppress("UNCHECKED_CAST") (mutableList as MutableList>).clear() // Verifiser at det er tomt diff --git a/src/test/kotlin/no/iktdev/eventi/testUtil/TaskTypeRegistryUtil.kt b/src/test/kotlin/no/iktdev/eventi/testUtil/TaskTypeRegistryUtil.kt index 9963ea2..1b96ba8 100644 --- a/src/test/kotlin/no/iktdev/eventi/testUtil/TaskTypeRegistryUtil.kt +++ b/src/test/kotlin/no/iktdev/eventi/testUtil/TaskTypeRegistryUtil.kt @@ -15,6 +15,7 @@ fun TaskTypeRegistry.wipe() { // Tøm map’en val typesMap = field.get(TaskTypeRegistry) as MutableMap<*, *> + @Suppress("UNCHECKED_CAST") (typesMap as MutableMap>).clear() // Verifiser at det er tomt