Sourcing ids

This commit is contained in:
Brage Skjønborg 2025-10-14 01:58:25 +02:00
parent b7c9e2827a
commit fe09a3de19
3 changed files with 7 additions and 3 deletions

View File

@ -15,7 +15,8 @@ abstract class Event {
fun producedFrom(task: Task): Event = self<Event>().apply {
referenceId = task.referenceId
metadata = Metadata().derivedFromEventId(task.taskId)
val derivedIds = task.metadata.derivedFromId ?: emptySet()
metadata = Metadata().derivedFromEventId(derivedIds)
}
fun derivedOf(vararg event: Event) = self<Event>().apply {

View File

@ -10,4 +10,7 @@ class Metadata {
fun derivedFromEventId(vararg id: UUID) = apply {
derivedFromId = id.toSet()
}
fun derivedFromEventId(ids: Set<UUID>) = apply {
derivedFromId = ids
}
}

View File

@ -115,14 +115,14 @@ class AbstractTaskPollerTest : TestBase() {
val poller = object : AbstractTaskPoller(taskStore, reporterFactory) {}
val task = EchoTask("Hello").newReferenceId()
val task = EchoTask("Hello").newReferenceId().derivedOf(object : Event() {})
taskStore.persist(task)
poller.pollOnce()
advanceUntilIdle()
val producedEvent = eventDeferred.await()
assertThat(producedEvent).isNotNull
assertThat(producedEvent.metadata.derivedFromId).hasSize(1)
assertThat(producedEvent.metadata.derivedFromId).contains(task.taskId)
assertThat(producedEvent.metadata.derivedFromId).contains(task.metadata.derivedFromId!!.first())
assertThat((listener.result as EchoEvent).data).isEqualTo("Hello Potetmos")
}