From c6be19f98cc713a88954c7705495dc6eb775c32f Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Tue, 10 Dec 2019 19:56:22 +0100 Subject: [PATCH] =?utf8?q?=F0=9F=90=9B=20Fix=20sone-locked=20notification?= =?utf8?q?=20not=20showing=20all=20Sones?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../sone/web/notification/SoneLockedHandler.kt | 14 +++++++------- .../sone/web/notification/SoneLockedHandlerTest.kt | 8 +++++--- 2 files changed, 12 insertions(+), 10 deletions(-) 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)) } -- 2.7.4