X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FTemplateRendererTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FTemplateRendererTest.kt;h=cb03c618d28edf669982d13c385560a92cdb85cb;hp=0000000000000000000000000000000000000000;hb=03cec6a6772c2d836d94864adddaf544cbe9d72f;hpb=6f1f26e3998cfef155b0cf59152827accea70d30 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/page/TemplateRendererTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/page/TemplateRendererTest.kt new file mode 100644 index 0000000..cb03c61 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/web/page/TemplateRendererTest.kt @@ -0,0 +1,60 @@ +package net.pterodactylus.sone.web.page + +import com.google.inject.* +import net.pterodactylus.sone.test.* +import net.pterodactylus.sone.utils.* +import net.pterodactylus.util.template.* +import net.pterodactylus.util.web.* +import org.hamcrest.MatcherAssert.* +import org.hamcrest.Matchers.* +import org.junit.* +import org.junit.rules.* + +class TemplateRendererTest { + + @Rule + @JvmField + val expectedException: ExpectedException = ExpectedException.none() + private val templateContextFactory = TemplateContextFactory() + private val templateRenderer = TemplateRenderer(templateContextFactory) + + @Test + fun `renderer can render template`() { + val template = "foo".asTemplate() + val rendered = templateRenderer.render(template) + assertThat(rendered, equalTo("foo")) + } + + @Test + fun `renderer merges template contexts from template and context factory`() { + templateContextFactory.addTemplateObject("a", 1) + val template = "<%a><%b>".asTemplate() + template.initialContext.set("b", 2) + val rendered = templateRenderer.render(template) + assertThat(rendered, equalTo("12")) + } + + @Test + fun `template context can be processed`() { + templateContextFactory.addTemplateObject("a", 1) + val template = "<%a><%b><%c>".asTemplate() + template.initialContext.set("b", 2) + val rendered = templateRenderer.render(template) { templateContext -> templateContext.set("c", 3) } + assertThat(rendered, equalTo("123")) + } + + @Test + fun `redirect exceptions are thrown`() { + expectedException.expect(RedirectException::class.java) + templateRenderer.render(Template()) { _ -> throw RedirectException("foo") } + } + + @Test + fun `template renderer can be created by guice`() { + val injector = Guice.createInjector( + TemplateContextFactory::class.isProvidedByMock() + ) + assertThat(injector.getInstance(), notNullValue()) + } + +}