🎨 Turn notification handler into an empty husk
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 2 Dec 2019 19:56:40 +0000 (20:56 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 11 Dec 2019 15:58:55 +0000 (16:58 +0100)
src/main/kotlin/net/pterodactylus/sone/web/notification/NotificationHandler.kt
src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerTest.kt [deleted file]

index 37df1ac..9863013 100644 (file)
 
 package net.pterodactylus.sone.web.notification
 
-import com.google.common.eventbus.*
-import net.pterodactylus.sone.main.*
-import net.pterodactylus.util.notify.*
 import javax.inject.*
 
 /**
- * Handler for notifications that can create notifications and register them with an event bus.
+ * Container that causes notification handlers to be created and (more importantly) registered
+ * on creation with the event bus.
  */
-@Suppress("UnstableApiUsage")
-class NotificationHandler @Inject constructor(private val eventBus: EventBus, private val loaders: Loaders, private val notificationManager: NotificationManager) {
-
-       fun start() {
-               register { SoneLockedOnStartupHandler(it, loaders.loadTemplate("/templates/notify/soneLockedOnStartupNotification.html")) }
-               register { NewSoneHandler(it, loaders.loadTemplate("/templates/notify/newSoneNotification.html")) }
-       }
-
-       private fun register(handler: (NotificationManager) -> Any) =
-                       handler(notificationManager).also(eventBus::register)
-
-}
+@Suppress("UNUSED_PARAMETER")
+class NotificationHandler @Inject constructor(
+               markPostKnownDuringFirstStartHandler: MarkPostKnownDuringFirstStartHandler
+)
diff --git a/src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/notification/NotificationHandlerTest.kt
deleted file mode 100644 (file)
index a0ccb9d..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Sone - NotificationHandlerTest.kt - Copyright Â© 2019 David â€˜Bombe’ Roden
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.pterodactylus.sone.web.notification
-
-import com.google.common.eventbus.*
-import com.google.inject.Guice.*
-import net.pterodactylus.sone.main.*
-import net.pterodactylus.sone.test.*
-import net.pterodactylus.util.notify.*
-import net.pterodactylus.util.template.*
-import net.pterodactylus.util.web.*
-import org.hamcrest.MatcherAssert.*
-import org.hamcrest.Matchers.*
-import kotlin.test.*
-
-/**
- * Unit test for [NotificationHandler].
- */
-class NotificationHandlerTest {
-
-       private val eventBus = TestEventBus()
-       private val loaders = TestLoaders()
-       private val notificationManager = NotificationManager()
-       private val handler = NotificationHandler(eventBus, loaders, notificationManager)
-
-       @Test
-       fun `notification handler can be created by guice`() {
-               val injector = createInjector(
-                               EventBus::class.isProvidedBy(eventBus),
-                               NotificationManager::class.isProvidedBy(notificationManager),
-                               Loaders::class.isProvidedBy(loaders)
-               )
-               assertThat(injector.getInstance<NotificationHandler>(), notNullValue())
-       }
-
-       @Test
-       fun `notification handler registers handler for sone-locked event`() {
-               handler.start()
-               assertThat(eventBus.registeredObjects, hasItem<Any>(matches { it.javaClass == SoneLockedOnStartupHandler::class.java }))
-       }
-
-       @Test
-       fun `notification handler loads sone-locked notification template`() {
-               handler.start()
-               assertThat(loaders.requestedTemplatePaths, hasItem("/templates/notify/soneLockedOnStartupNotification.html"))
-       }
-
-       @Test
-       fun `notification handler registers handler for new sone events`() {
-               handler.start()
-               assertThat(eventBus.registeredObjects, hasItem<Any>(matches { it.javaClass == NewSoneHandler::class.java }))
-       }
-
-       @Test
-       fun `notification handler loads new sone notification template`() {
-               handler.start()
-               assertThat(loaders.requestedTemplatePaths, hasItem("/templates/notify/newSoneNotification.html"))
-       }
-
-}
-
-@Suppress("UnstableApiUsage")
-private class TestEventBus : EventBus() {
-       private val _registeredObjects = mutableListOf<Any>()
-       val registeredObjects: List<Any>
-               get() = _registeredObjects
-
-       override fun register(`object`: Any) {
-               super.register(`object`)
-               _registeredObjects += `object`
-       }
-
-}
-
-private class TestLoaders : Loaders {
-       val requestedTemplatePaths = mutableListOf<String>()
-
-       override fun loadTemplate(path: String) =
-                       Template().also { requestedTemplatePaths += path }
-
-       override fun <REQ : Request> loadStaticPage(basePath: String, prefix: String, mimeType: String) = object : Page<REQ> {
-
-               override fun getPath() = ""
-               override fun isPrefixPage() = false
-               override fun handleRequest(request: REQ, response: Response) = response
-
-       }
-
-       override fun getTemplateProvider() = TemplateProvider { _, _ -> Template() }
-
-}