Minor adjustments
This commit is contained in:
parent
82cb245639
commit
d2d8b0f12d
@ -24,6 +24,6 @@ class ConvertWorkTaskListenerTest {
|
|||||||
val content = Files.MultipleLanguageBased.databaseJsonToEvents().filter { it.eventType in listOf( Events.WorkExtractPerformed, Events.ProcessStarted, Events.WorkConvertCreated, Events.WorkConvertPerformed) }
|
val content = Files.MultipleLanguageBased.databaseJsonToEvents().filter { it.eventType in listOf( Events.WorkExtractPerformed, Events.ProcessStarted, Events.WorkConvertCreated, Events.WorkConvertPerformed) }
|
||||||
assertThat(listener).isNotNull()
|
assertThat(listener).isNotNull()
|
||||||
val success = content.map { listener.shouldIProcessAndHandleEvent(it, content) to it }
|
val success = content.map { listener.shouldIProcessAndHandleEvent(it, content) to it }
|
||||||
assertThat(success.filter { it.first }.size).isGreaterThan(2)
|
assertThat(success.filter { it.first }.size).isGreaterThan(3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common
|
package no.iktdev.mediaprocessing.shared.common
|
||||||
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.contract.Events
|
import no.iktdev.mediaprocessing.shared.common.contract.Events
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.contract.data.EpisodeInfo
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.contract.data.MediaMetadataReceivedEvent
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.contract.data.MediaOutInformationConstructedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData
|
import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData
|
||||||
import no.iktdev.mediaprocessing.shared.common.contract.jsonToEvent
|
import no.iktdev.mediaprocessing.shared.common.contract.jsonToEvent
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
@ -18,5 +21,80 @@ class DatabaseDeserializerTest {
|
|||||||
assertThat(result.eventType).isEqualTo(Events.ProcessStarted)
|
assertThat(result.eventType).isEqualTo(Events.ProcessStarted)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun validateMediaInfo() {
|
||||||
|
//language=json
|
||||||
|
val data = """
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"derivedFromEventId": "c2ec1424-3d8f-444c-ad85-ce04e6c583fd",
|
||||||
|
"eventId": "0b164f37-fa23-4b43-a31e-edfa56325eb2",
|
||||||
|
"referenceId": "920e67cc-1f07-43f0-b121-e5ae87195122",
|
||||||
|
"status": "Success",
|
||||||
|
"created": "2025-02-24T00:39:16.057643776",
|
||||||
|
"source": "MediaOutInformationTaskListener"
|
||||||
|
},
|
||||||
|
"eventType": "ReadOutNameAndType",
|
||||||
|
"data": {
|
||||||
|
"info": {
|
||||||
|
"type": "serie",
|
||||||
|
"title": "The Potato",
|
||||||
|
"episode": 1,
|
||||||
|
"season": 2,
|
||||||
|
"episodeTitle": "",
|
||||||
|
"fullName": "The Bit potato"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
""".trimIndent()
|
||||||
|
val result = data.jsonToEvent("event:media-read-out-name-and-type:performed")
|
||||||
|
assertThat(result.data!!.javaClass).hasSameClassAs(MediaOutInformationConstructedEvent::class.java)
|
||||||
|
assertThat(result.eventType).isNotNull()
|
||||||
|
val serieInfo = (result as MediaOutInformationConstructedEvent).data?.toValueObject()
|
||||||
|
assertThat(serieInfo).isNotNull()
|
||||||
|
assertThat(serieInfo!!.javaClass).hasSameClassAs(EpisodeInfo::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun validateMetadataRead() {
|
||||||
|
//language=json
|
||||||
|
val data = """
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"derivedFromEventId": "855b6de0-38f1-4ac9-9397-1ca7fc83fa4d",
|
||||||
|
"eventId": "c2ec1424-3d8f-444c-ad85-ce04e6c583fd",
|
||||||
|
"referenceId": "920e67cc-1f07-43f0-b121-e5ae87195122",
|
||||||
|
"status": "Success",
|
||||||
|
"created": "2025-02-24T00:39:15.674278",
|
||||||
|
"source": "metadataApp"
|
||||||
|
},
|
||||||
|
"eventType": "EventMediaMetadataSearchPerformed",
|
||||||
|
"data": {
|
||||||
|
"title": "Cabbage",
|
||||||
|
"altTitle": [
|
||||||
|
"Cabbage man"
|
||||||
|
],
|
||||||
|
"cover": "https://cabbageman.co",
|
||||||
|
"banner": null,
|
||||||
|
"type": "serie",
|
||||||
|
"summary": [
|
||||||
|
{
|
||||||
|
"summary": "Forced to becoma a cabbage farmer after getting their passport confiscated",
|
||||||
|
"language": "eng"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"genres": [
|
||||||
|
"Drama",
|
||||||
|
"Mystery"
|
||||||
|
],
|
||||||
|
"source": "yt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
""".trimIndent()
|
||||||
|
val result = data.jsonToEvent("event:media-metadata-search:performed")
|
||||||
|
assertThat(result.data!!.javaClass).hasSameClassAs(MediaMetadataReceivedEvent::class.java)
|
||||||
|
assertThat(result.eventType).isNotNull()
|
||||||
|
assertThat(result.data).isNotNull()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -48,6 +48,16 @@ abstract class EventListenerImpl<T: EventImpl, E: EventsManagerImpl<T>> {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun havProducedDerivedEventOnIncomingEvent(incomingEvent: T, events: List<T>): Boolean {
|
||||||
|
val eventId = incomingEvent.eventId()
|
||||||
|
val producedEventsByListener = events.filter { it.eventType == produceEvent }
|
||||||
|
val consumedEvent = producedEventsByListener.find { it.metadata.derivedFromEventId == eventId }
|
||||||
|
if (consumedEvent != null) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
open fun haveProducedExpectedMessageBasedOnEvent(incomingEvent: T, events: List<T>): Boolean {
|
open fun haveProducedExpectedMessageBasedOnEvent(incomingEvent: T, events: List<T>): Boolean {
|
||||||
val eventsProducedByListener = events.filter { it.eventType == produceEvent }
|
val eventsProducedByListener = events.filter { it.eventType == produceEvent }
|
||||||
@ -70,14 +80,18 @@ abstract class EventListenerImpl<T: EventImpl, E: EventsManagerImpl<T>> {
|
|||||||
if (haveListenerProduced)
|
if (haveListenerProduced)
|
||||||
return false
|
return false
|
||||||
|
|
||||||
if (haveProducedExpectedMessageBasedOnEvent(incomingEvent, events))
|
|
||||||
return false
|
|
||||||
|
|
||||||
if (events.any { it.eventType == produceEvent } && !canProduceMultipleEvents()) {
|
if (events.any { it.eventType == produceEvent } && !canProduceMultipleEvents()) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
//val isDerived = events.any { it.metadata.derivedFromEventId == incomingEvent.metadata.eventId } // && incomingEvent.eventType == produceEvent
|
if (!havProducedDerivedEventOnIncomingEvent(incomingEvent, events) && canProduceMultipleEvents()) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (haveProducedExpectedMessageBasedOnEvent(incomingEvent, events))
|
||||||
|
return false
|
||||||
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user