🚨 Suppress some warnings about unused parameters
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / main / SonePluginTest.kt
index b40df75..d1e2cec 100644 (file)
@@ -15,6 +15,7 @@ import net.pterodactylus.sone.web.*
 import net.pterodactylus.sone.web.notification.*
 import org.hamcrest.MatcherAssert.*
 import org.hamcrest.Matchers.*
+import org.junit.experimental.categories.*
 import org.mockito.Mockito.*
 import java.io.*
 import java.util.concurrent.atomic.*
@@ -24,9 +25,10 @@ import kotlin.test.*
  * Unit test for [SonePlugin].
  */
 @Dirty
+@Category(NotParallel::class)
 class SonePluginTest {
 
-       private val sonePlugin by lazy { SonePlugin { injector } }
+       private var sonePlugin = SonePlugin { injector }
        private val pluginRespirator = deepMock<PluginRespirator>()
        private val node = deepMock<Node>()
        private val clientCore = deepMock<NodeClientCore>()
@@ -76,7 +78,7 @@ class SonePluginTest {
 
        private fun runSonePluginWithRealInjector(injectorConsumer: (Injector) -> Unit = {}): Injector {
                lateinit var injector: Injector
-               val sonePlugin = SonePlugin {
+               sonePlugin = SonePlugin {
                        Guice.createInjector(*it).also {
                                injector = it
                                injectorConsumer(it)
@@ -100,9 +102,15 @@ class SonePluginTest {
                assertThat(getInjected(NotificationHandler::class.java), notNullValue())
        }
 
+       @Test
+       fun `ticker shutdown is being requested`() {
+               sonePlugin.runPlugin(pluginRespirator)
+               assertThat(getInjected(TickerShutdown::class.java), notNullValue())
+       }
+
        private class FirstStartListener(private val firstStartReceived: AtomicBoolean) {
                @Subscribe
-               fun firstStart(firstStart: FirstStart) {
+               fun firstStart(@Suppress("UNUSED_PARAMETER") firstStart: FirstStart) {
                        firstStartReceived.set(true)
                }
        }
@@ -115,7 +123,6 @@ class SonePluginTest {
                        val eventBus = it.getInstance(EventBus::class.java)
                        eventBus.register(FirstStartListener(firstStartReceived))
                }
-               sonePlugin.runPlugin(pluginRespirator)
                assertThat(firstStartReceived.get(), equalTo(true))
        }
 
@@ -128,14 +135,13 @@ class SonePluginTest {
                                val eventBus = it.getInstance(EventBus::class.java)
                                eventBus.register(FirstStartListener(firstStartReceived))
                        }
-                       sonePlugin.runPlugin(pluginRespirator)
                        assertThat(firstStartReceived.get(), equalTo(false))
                }
        }
 
        private class ConfigNotReadListener(private val configNotReadReceiver: AtomicBoolean) {
                @Subscribe
-               fun configNotRead(configNotRead: ConfigNotRead) {
+               fun configNotRead(@Suppress("UNUSED_PARAMETER") configNotRead: ConfigNotRead) {
                        configNotReadReceiver.set(true)
                }
        }
@@ -149,7 +155,6 @@ class SonePluginTest {
                                val eventBus = it.getInstance(EventBus::class.java)
                                eventBus.register(ConfigNotReadListener(configNotReadReceived))
                        }
-                       sonePlugin.runPlugin(pluginRespirator)
                        assertThat(configNotReadReceived.get(), equalTo(true))
                }
        }
@@ -162,7 +167,6 @@ class SonePluginTest {
                        val eventBus = it.getInstance(EventBus::class.java)
                        eventBus.register(ConfigNotReadListener(configNotReadReceived))
                }
-               sonePlugin.runPlugin(pluginRespirator)
                assertThat(configNotReadReceived.get(), equalTo(false))
        }
 
@@ -175,14 +179,13 @@ class SonePluginTest {
                                val eventBus = it.getInstance(EventBus::class.java)
                                eventBus.register(ConfigNotReadListener(configNotReadReceived))
                        }
-                       sonePlugin.runPlugin(pluginRespirator)
                        assertThat(configNotReadReceived.get(), equalTo(false))
                }
        }
 
        private class StartupListener(private val startupReceived: () -> Unit) {
                @Subscribe
-               fun startup(startup: Startup) {
+               fun startup(@Suppress("UNUSED_PARAMETER") startup: Startup) {
                        startupReceived()
                }
        }
@@ -194,10 +197,27 @@ class SonePluginTest {
                        val eventBus = it.getInstance(EventBus::class.java)
                        eventBus.register(StartupListener { startupReceived.set(true) })
                }
-               sonePlugin.runPlugin(pluginRespirator)
                assertThat(startupReceived.get(), equalTo(true))
        }
 
+       private class ShutdownListener(private val shutdownReceived: () -> Unit) {
+               @Subscribe
+               fun shutdown(@Suppress("UNUSED_PARAMETER") shutdown: Shutdown) {
+                       shutdownReceived()
+               }
+       }
+
+       @Test
+       fun `shutdown event is sent to event bus on terminate`() {
+               val shutdownReceived = AtomicBoolean()
+               runSonePluginWithRealInjector {
+                       val eventBus = it.getInstance(EventBus::class.java)
+                       eventBus.register(ShutdownListener { shutdownReceived.set(true) })
+               }
+               sonePlugin.terminate()
+               assertThat(shutdownReceived.get(), equalTo(true))
+       }
+
        private fun <T> getInjected(clazz: Class<T>, annotation: Annotation? = null): T? =
                        injected[TypeLiteral.get(clazz) to annotation] as? T