From: David ‘Bombe’ Roden Date: Tue, 10 Dec 2019 18:56:22 +0000 (+0100) Subject: 🐛 Fix sone-locked notification not showing all Sones X-Git-Tag: v81^2~5^2~65 X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=commitdiff_plain;h=c6be19f98cc713a88954c7705495dc6eb775c32f 🐛 Fix sone-locked notification not showing all Sones --- diff --git a/src/main/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandler.kt b/src/main/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandler.kt index 583601b..e8f2a79 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandler.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandler.kt @@ -40,25 +40,25 @@ class SoneLockedHandler @Inject constructor( @Subscribe fun soneLocked(soneLockedEvent: SoneLockedEvent) { synchronized(future) { - future.get()?.also { cancelPreviousFuture(it, soneLockedEvent.sone) } - future.set(executor.schedule(showNotification(soneLockedEvent.sone), 5, TimeUnit.MINUTES)) + notification.add(soneLockedEvent.sone) + future.get()?.also(this::cancelPreviousFuture) + future.set(executor.schedule(::showNotification, 5, TimeUnit.MINUTES)) } } @Subscribe fun soneUnlocked(soneUnlockedEvent: SoneUnlockedEvent) { synchronized(future) { - future.get()?.also { cancelPreviousFuture(it, soneUnlockedEvent.sone) } + notification.remove(soneUnlockedEvent.sone) + future.get()?.also(::cancelPreviousFuture) } } - private fun cancelPreviousFuture(future: ScheduledFuture<*>, sone: Sone) { - notification.remove(sone) + private fun cancelPreviousFuture(future: ScheduledFuture<*>) { future.cancel(true) } - private fun showNotification(sone: Sone): () -> Unit = { - notification.add(sone) + private fun showNotification() { notificationManager.addNotification(notification) } diff --git a/src/test/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandlerTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandlerTest.kt index 2daf5c9..191168e 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandlerTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/notification/SoneLockedHandlerTest.kt @@ -44,16 +44,18 @@ class SoneLockedHandlerTest { SoneLockedHandler(notificationManager, notification, executor).also(eventBus::register) } + @AfterTest + fun shutdownExecutor() = executor.shutdown() + @Test - fun `notification is not added during the first five minutes`() { + fun `notification is not added before the command is run`() { eventBus.post(SoneLockedEvent(sone)) assertThat(notificationManager.notifications, emptyIterable()) } @Test - fun `sone is added to notification from command`() { + fun `sone is added to notification immediately`() { eventBus.post(SoneLockedEvent(sone)) - executor.scheduledDelay.single().command.run() assertThat(notification.elements, contains(sone)) }