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
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`
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
}
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))
+
+ }
+
}