Replace Sone provider interface with Kotlin version
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / template / ParserFilterTest.kt
index 3c735c2..0e44568 100644 (file)
@@ -1,8 +1,10 @@
 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 +12,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`
@@ -35,7 +39,7 @@ class ParserFilterTest {
        private fun setupSone(identity: String): Sone {
                val sone = mock<Sone>()
                `when`(sone.id).thenReturn(identity)
-               `when`(core.getSone(identity)).thenReturn(of(sone))
+               `when`(core.getSone(identity)).thenReturn(sone)
                return sone
        }
 
@@ -58,8 +62,29 @@ class ParserFilterTest {
                parameters.put("sone", soneOrSoneId)
                filter.format(templateContext, "text", parameters)
                val context = forClass(SoneTextParserContext::class.java)
-               verify(soneTextParser).parse(eq<String>("text"), context.capture())
+               verify(soneTextParser).parse(eq<String>("text") ?: "", context.capture())
                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))
+
+       }
+
 }