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 { fun producedFrom(task: Task): Event = self<Event>().apply {
referenceId = task.referenceId 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 { fun derivedOf(vararg event: Event) = self<Event>().apply {

View File

@ -10,4 +10,7 @@ class Metadata {
fun derivedFromEventId(vararg id: UUID) = apply { fun derivedFromEventId(vararg id: UUID) = apply {
derivedFromId = id.toSet() 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 poller = object : AbstractTaskPoller(taskStore, reporterFactory) {}
val task = EchoTask("Hello").newReferenceId() val task = EchoTask("Hello").newReferenceId().derivedOf(object : Event() {})
taskStore.persist(task) taskStore.persist(task)
poller.pollOnce() poller.pollOnce()
advanceUntilIdle() advanceUntilIdle()
val producedEvent = eventDeferred.await() val producedEvent = eventDeferred.await()
assertThat(producedEvent).isNotNull assertThat(producedEvent).isNotNull
assertThat(producedEvent.metadata.derivedFromId).hasSize(1) 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") assertThat((listener.result as EchoEvent).data).isEqualTo("Hello Potetmos")
} }