🎨 Remove template context factory from web interface API
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / GetReplyAjaxPageTest.kt
index 8fe16e2..c59e65c 100644 (file)
@@ -2,26 +2,31 @@ package net.pterodactylus.sone.web.ajax
 
 import net.pterodactylus.sone.data.PostReply
 import net.pterodactylus.sone.data.Sone
+import net.pterodactylus.sone.test.getInstance
 import net.pterodactylus.sone.test.mock
 import net.pterodactylus.sone.test.whenever
 import net.pterodactylus.sone.utils.asTemplate
+import net.pterodactylus.sone.web.baseInjector
 import net.pterodactylus.util.template.ReflectionAccessor
+import net.pterodactylus.util.template.TemplateContextFactory
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.notNullValue
 import org.junit.Test
 
 /**
  * Unit test for [GetReplyAjaxPage].
  */
-class GetReplyAjaxPageTest : JsonPageTest("getReply.ajax", needsFormPassword = false,
-               pageSupplier = { webInterface ->
-                       GetReplyAjaxPage(webInterface, "<%core>\n<%request>\n<%reply.text>\n<%currentSone>".asTemplate())
-               }) {
+class GetReplyAjaxPageTest : JsonPageTest("getReply.ajax", needsFormPassword = false) {
+
+       private val templateContextFactory = TemplateContextFactory().apply {
+               addAccessor(Any::class.java, ReflectionAccessor())
+       }
+       override val page: JsonPage by lazy { GetReplyAjaxPage(webInterface, templateContextFactory, "<%core>\n<%request>\n<%reply.text>\n<%currentSone>".asTemplate()) }
 
        @Test
        fun `request without reply id results in invalid-reply-id`() {
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("invalid-reply-id"))
+               assertThatJsonFailed("invalid-reply-id")
        }
 
        @Test
@@ -34,15 +39,14 @@ class GetReplyAjaxPageTest : JsonPageTest("getReply.ajax", needsFormPassword = f
                        whenever(time).thenReturn(1000)
                        whenever(text).thenReturn("reply text")
                }
-               webInterface.templateContextFactory.addAccessor(Any::class.java, ReflectionAccessor())
                addReply(reply)
                addRequestParameter("reply", "reply-id")
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["reply"]["id"].asText(), equalTo("reply-id"))
-               assertThat(json["reply"]["soneId"].asText(), equalTo("sone-id"))
-               assertThat(json["reply"]["postId"].asText(), equalTo("post-id"))
-               assertThat(json["reply"]["time"].asLong(), equalTo(1000L))
-               assertThat(json["reply"]["html"].asText(), equalTo(listOf(
+               assertThatJsonIsSuccessful()
+               assertThat(json["reply"]!!["id"].asText(), equalTo("reply-id"))
+               assertThat(json["reply"]!!["soneId"].asText(), equalTo("sone-id"))
+               assertThat(json["reply"]!!["postId"].asText(), equalTo("post-id"))
+               assertThat(json["reply"]!!["time"].asLong(), equalTo(1000L))
+               assertThat(json["reply"]!!["html"].asText(), equalTo(listOf(
                                core.toString(),
                                freenetRequest.toString(),
                                "reply text",
@@ -50,4 +54,9 @@ class GetReplyAjaxPageTest : JsonPageTest("getReply.ajax", needsFormPassword = f
                ).joinToString("\n")))
        }
 
+       @Test
+       fun `page can be created by dependency injection`() {
+           assertThat(baseInjector.getInstance<GetReplyAjaxPage>(), notNullValue())
+       }
+
 }