diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListener.kt index cf63a4d2..90add50f 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListener.kt @@ -42,6 +42,7 @@ class MediaCreateMetadataSearchTaskListener: EventListener() { scheduledExpiries.filter { it -> it.key in cancelKeys }.keys.forEach { key -> scheduledExpiries.remove(key)?.cancel(true) } + return null } val useEvent = event as? MediaParsedInfoEvent ?: return null diff --git a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListenerTest.kt b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListenerTest.kt index df440fae..e526fe24 100644 --- a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListenerTest.kt +++ b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/MediaCreateMetadataSearchTaskListenerTest.kt @@ -1,5 +1,6 @@ package no.iktdev.mediaprocessing.coordinator.listeners.events +import io.mockk.clearMocks import io.mockk.slot import io.mockk.verify import no.iktdev.eventi.models.Event @@ -195,6 +196,53 @@ class MediaCreateMetadataSearchTaskListenerTest : TestBase() { verify(exactly = 2) { TaskStore.persist(any()) } } + @DisplayName( + """ + Hvis MetadataSearchResultEvent mottas + Når onEvent kalles + Så: + Timeout slettes + """ + ) + @Test + fun timeoutRemoval1() { + // Hvis + val listener = MediaCreateMetadataSearchTaskListener() + val started = defaultStartEvent() + val parsed = mediaParsedEvent( + "Baking Bread", + "Baking Bread - S01E01 - Flour", + MediaType.Serie + ).derivedOf(started) + + val history = listOf(started, parsed) + + // Når + val result = listener.onEvent(parsed, history) + + // Så + assertThat(result).isInstanceOf(MetadataSearchTaskCreatedEvent::class.java) + + val slot = slot() + verify(exactly = 1) { TaskStore.persist(capture(slot)) } + + val taskId = slot.captured.taskId + assertThat(listener.scheduledExpiries).containsKey(taskId) + + // Completed Event here + clearMocks(TaskStore, answers = false) + + val resultEvent = MetadataSearchResultEvent( + status = TaskStatus.Completed, + results = emptyList() + ).producedFrom(slot.captured) + + val newHistory = history + listOf(resultEvent) + listener.onEvent(resultEvent, newHistory) + verify(exactly = 0) { TaskStore.persist(any()) } + + assertThat(listener.scheduledExpiries).doesNotContainKey(taskId) + }