Add test for DI constructability of TrustAjaxPage
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / EditImageAjaxPageTest.kt
index 6a3d89c..26436a3 100644 (file)
@@ -8,10 +8,14 @@ import net.pterodactylus.sone.template.ParserFilter
 import net.pterodactylus.sone.template.RenderFilter
 import net.pterodactylus.sone.template.ShortenFilter
 import net.pterodactylus.sone.test.argumentCaptor
+import net.pterodactylus.sone.test.getInstance
+import net.pterodactylus.sone.test.isProvidedByMock
 import net.pterodactylus.sone.test.mock
 import net.pterodactylus.sone.test.whenever
+import net.pterodactylus.sone.web.baseInjector
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.notNullValue
 import org.junit.Test
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.eq
@@ -29,8 +33,7 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
 
        @Test
        fun `request without image results in invalid-image-id`() {
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("invalid-image-id"))
+               assertThatJsonFailed("invalid-image-id")
        }
 
        @Test
@@ -40,8 +43,7 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
                whenever(image.sone).thenReturn(sone)
                addImage(image, "image-id")
                addRequestParameter("image", "image-id")
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("not-authorized"))
+               assertThatJsonFailed("not-authorized")
        }
 
        @Test
@@ -56,9 +58,9 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
                addImage(image)
                addRequestParameter("image", "image-id")
                addRequestParameter("moveLeft", "true")
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["sourceImageId"].asText(), equalTo("image-id"))
-               assertThat(json["destinationImageId"].asText(), equalTo("swapped"))
+               assertThatJsonIsSuccessful()
+               assertThat(json["sourceImageId"]?.asText(), equalTo("image-id"))
+               assertThat(json["destinationImageId"]?.asText(), equalTo("swapped"))
                verify(core).touchConfiguration()
        }
 
@@ -74,9 +76,9 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
                addImage(image)
                addRequestParameter("image", "image-id")
                addRequestParameter("moveRight", "true")
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["sourceImageId"].asText(), equalTo("image-id"))
-               assertThat(json["destinationImageId"].asText(), equalTo("swapped"))
+               assertThatJsonIsSuccessful()
+               assertThat(json["sourceImageId"]?.asText(), equalTo("image-id"))
+               assertThat(json["destinationImageId"]?.asText(), equalTo("swapped"))
                verify(core).touchConfiguration()
        }
 
@@ -87,8 +89,7 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
                whenever(image.sone).thenReturn(sone)
                addImage(image)
                addRequestParameter("image", "image-id")
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("invalid-image-title"))
+               assertThatJsonFailed("invalid-image-title")
        }
 
        @Test
@@ -106,14 +107,23 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
                addRequestParameter("title", "some title")
                addRequestParameter("description", "some http://127.0.0.1:8888/KSK@foo link")
                addRequestHeader("Host", "127.0.0.1:8888")
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["title"].asText(), equalTo("some title"))
-               assertThat(json["description"].asText(), equalTo("some KSK@foo link"))
-               assertThat(json["parsedDescription"].asText(), equalTo("rendered description"))
+               assertThatJsonIsSuccessful()
+               assertThat(json["title"]?.asText(), equalTo("some title"))
+               assertThat(json["description"]?.asText(), equalTo("some KSK@foo link"))
+               assertThat(json["parsedDescription"]?.asText(), equalTo("rendered description"))
                verify(core).touchConfiguration()
                val parameterCaptor = argumentCaptor<MutableMap<String, Any?>>()
                verify(parserFilter).format(any(), any(), parameterCaptor.capture())
                assertThat(parameterCaptor.value["sone"], equalTo<Any>(sone))
        }
 
+       @Test
+       fun `page can be created by dependency injection`() {
+               assertThat(baseInjector.createChildInjector(
+                               ParserFilter::class.isProvidedByMock(),
+                               ShortenFilter::class.isProvidedByMock(),
+                               RenderFilter::class.isProvidedByMock()
+               ).getInstance<EditImageAjaxPage>(), notNullValue())
+       }
+
 }