Make parser filter injectable
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / template / ParserFilterTest.kt
index 3c735c2..ac2886a 100644 (file)
@@ -1,8 +1,11 @@
 package net.pterodactylus.sone.template
 
 import com.google.common.base.Optional.of
+import com.google.inject.Guice
 import net.pterodactylus.sone.core.Core
 import net.pterodactylus.sone.data.Sone
+import net.pterodactylus.sone.test.getInstance
+import net.pterodactylus.sone.test.isProvidedByMock
 import net.pterodactylus.sone.test.mock
 import net.pterodactylus.sone.text.SoneTextParser
 import net.pterodactylus.sone.text.SoneTextParserContext
@@ -10,6 +13,8 @@ import net.pterodactylus.util.template.TemplateContext
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.`is`
 import org.hamcrest.Matchers.emptyIterable
+import org.hamcrest.Matchers.notNullValue
+import org.hamcrest.Matchers.sameInstance
 import org.junit.Test
 import org.mockito.ArgumentCaptor.forClass
 import org.mockito.Mockito.`when`
@@ -62,4 +67,25 @@ class ParserFilterTest {
                assertThat(context.value.postingSone, `is`(sone))
        }
 
+       @Test
+       fun `parser filter can be created by guice`() {
+           val injector = Guice.createInjector(
+                           Core::class.isProvidedByMock(),
+                           SoneTextParser::class.isProvidedByMock()
+           )
+               assertThat(injector.getInstance<ParserFilter>(), notNullValue())
+       }
+
+       @Test
+       fun `parser filter is created as singleton`() {
+               val injector = Guice.createInjector(
+                               Core::class.isProvidedByMock(),
+                               SoneTextParser::class.isProvidedByMock()
+               )
+               val firstInstance = injector.getInstance<ParserFilter>()
+               val secondInstance = injector.getInstance<ParserFilter>()
+               assertThat(firstInstance, sameInstance(secondInstance))
+
+       }
+
 }