🔀 Merge “release/v81” into “master”
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / template / ParserFilterTest.kt
index 3c735c2..5864a6a 100644 (file)
@@ -1,18 +1,19 @@
 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.mock
+import net.pterodactylus.sone.test.*
 import net.pterodactylus.sone.text.SoneTextParser
 import net.pterodactylus.sone.text.SoneTextParserContext
 import net.pterodactylus.util.template.TemplateContext
 import org.hamcrest.MatcherAssert.assertThat
-import org.hamcrest.Matchers.`is`
+import org.hamcrest.Matchers.equalTo
 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`
 import org.mockito.Mockito.eq
 import org.mockito.Mockito.verify
 
@@ -34,8 +35,8 @@ class ParserFilterTest {
 
        private fun setupSone(identity: String): Sone {
                val sone = mock<Sone>()
-               `when`(sone.id).thenReturn(identity)
-               `when`(core.getSone(identity)).thenReturn(of(sone))
+               whenever(sone.id).thenReturn(identity)
+               whenever(core.getSone(identity)).thenReturn(sone)
                return sone
        }
 
@@ -58,8 +59,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())
-               assertThat(context.value.postingSone, `is`(sone))
+               verify(soneTextParser).parse(eq<String>("text") ?: "", context.capture())
+               assertThat(context.value.postingSone, equalTo(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))
+
        }
 
 }